如何将已经通过身份验证的用户从登录页面重定向到django的主页



我试图将已经通过身份验证的用户重定向到主页,这样他们在登录时就无法访问登录页面。

这对我的注册页面来说很容易实现,因为它利用了views.py中的一个功能,但对登录页面来说似乎更难做到,因为它使用了django.contrib.auth.urls(所以在views.py没有功能(

因此,我的问题是:如何在不使用视图功能的情况下将用户重定向到特定页面?在这种情况下,当用户已经登录时,mydomain.com/login/页面应该重定向到mydomain.com。

urlpatterns = [
path('admin/', admin.site.urls),
path('', homepage),
path('registration/', registration),
path('', include('django.contrib.auth.urls')),
]

views.py内部

from django.contrib.auth.decorators import login_required
@login_required
def myview(request):
return render(request,'mypage.html')

如果你想在主页上重定向用户,如果他们通过了身份验证,那么就做这个

创建名为decorators.py的文件内部创建一个视图,该视图将处理经过身份验证的用户

def unauthenticated_user(view_func):
def wrapper_func(request, *args, **kwargs):
if not request.user.is_authenticated:
return view_func(request, *args, **kwargs)
else:
return redirect('/')
return wrapper_func

它将检查如果用户未通过身份验证,它将调用作为参数传递的函数,否则它将把用户重定向到主页

你不必在views.py中导入decorator

从装饰器导入未经验证的用户

并在你的登录功能上调用它,就像这个

@unauthenticated_user
def login(request):
return render(request,"login.html")

最新更新