我正在使用 django-registration,然后进行设置。
{{user.is_authenticated }}
是的,即使我已经去 /accounts/logout/ 并注销了用户。
{{user.is_anonymous }}
也返回 true。根据 django 文档,这两个应该是不同的:
is_anonymous:总是返回 False。这是一种区分 User 和 AnonymousUser 对象的方法。通常,您应该更喜欢使用 is_authenticated() 而不是此方法。
和
is_authenticated:始终返回 True。这是一种判断用户是否已通过身份验证的方法。这并不意味着任何权限,也不会检查用户是否处于活动状态 - 它仅表明用户提供了有效的用户名和密码。
我正在使用 django-registration 附带的标准视图,但尚未触及它们。在模板中,我有以下代码:
{% if user.is_authenticated %}
{% user }}
{% if user.is_anonymous %}
is anonymous
{% endif $}
{% else %}
gotta login
{% endif %}
问题会出在哪里?我会很感激的!
更新:我注意到在主页上,is_authenticated 和 id_anonymous 都返回 True,而如果我在登录前转到 /accounts/login,则只有 is_anonymous 返回应为的 true。而且,在主页上,如果有帮助,我有以下观点:
def home(request):
return render_jinja(request, 'index.html', blah = 'ga')
更新 2: print(request.user.is_authenticated()) 给出 False。然后,我有:
return render_jinja(request, 'index.html', blah = 'ga')
在模板中,user.is_authenticated 返回 FALSE。
更新3:如果我使用render_to_response,而不是render_jinja,一切都很好。仍然不知道如何解决这个问题:(