django-registration:如何在显示页面之前检查用户是否已登录

Ven*_*tta 10 django django-authentication django-registration

我按照这个页面设置了一个django注册网站.它非常棒,注册和身份验证很好.

但是,它没有告诉我,在显示网页之前,如何检查用户是否已登录,该用户是谁?以及如何在登录后将用户定向到新页面?

谢谢!

msc*_*msc 13

在视图中,您可以使用if request.user.is_authenticated():和当前用户的变量request.user

在模板中,您可以使用{% if user.is_authenticated %}和当前用户的变量user

要在登录后重定向用户,可以在中设置LOGIN_REDIRECT_URL变量settings.py

  • 在视图中,请记住is_authenticated()是一个方法,而不是一个属性.如果您在视图中检查request.user.is_authenticated,那么您将始终成为现实. (2认同)

zur*_*fyx 7

在.py文件中

您可以在每个视图中使用它

if not request.user.is_authenticated():
   #do something
Run Code Online (Sandbox Code Playgroud)

或者就在每个视图之前

@login_required
Run Code Online (Sandbox Code Playgroud)

请记住,这个需要导入from django.contrib.auth.decorators import login_required
,您可能还想写入LOGIN_URL = "/loginurl/"您的settings.py非登录用户重定向到特定的URL而不是默认的URL accounts/login)

在.html文件中

{% if not user.is_authenticated %}
Login is required
{% endif %}
Run Code Online (Sandbox Code Playgroud)

登录后重定向

你可以修改LOGIN_REDIRECT_URLsettings.py

或者redirect("/indexpage")在用户登录后.
最后一个需要导入from django.shortcuts import redirect