11

我按照这个页面设置了一个 django 注册站点。它非常棒,并且注册和身份验证都包装得很好。

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

谢谢!

4

3 回答 3

14

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

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

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

于 2013-01-08T18:09:58.943 回答
7

在 .py 文件中

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

if not request.user.is_authenticated:
   #do something

或者这个就在每个视图之前

@login_required

请记住,这需要导入,您可能还希望在您的文件from django.contrib.auth.decorators import login_required
中写入以将未登录用户重定向到特定 URL 而不是默认 URL )LOGIN_URL = "/loginurl/"settings.pyaccounts/login

在 .html 文档中

{% if not user.is_authenticated %}
Login is required
{% endif %}

登录后重定向

您可以LOGIN_REDIRECT_URLsettings.py

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

于 2013-07-25T12:30:26.693 回答
4

您还可以在视图之前使用登录所需的装饰器:

@login_required()

如果未登录的用户尝试访问您的视图,它会将用户重定向到登录页面

您将在此页面上找到更多信息: https ://docs.djangoproject.com/en/dev/topics/auth/default/#topic-authorization

于 2013-01-29T10:17:52.733 回答