【发布时间】:2010-11-28 18:47:09
【问题描述】:
我正在使用 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,一切都很好。仍然不知道如何解决这个问题:(
【问题讨论】:
-
恐怕我在新创建的项目和应用程序中根本无法重现这种行为。您使用的是哪个版本的 Django?您如何让用户登录,然后再将用户注销?
-
如果您告诉我如何检查我拥有的 django 版本,我将非常乐意检查!在黑暗中拍摄 - 1.2
-
由于我使用的是这个开源的 django-registration 应用程序,我正在登录帐户/登录/并在帐户/注销处注销。如果你告诉我如何在评论中粘贴代码,我可以从这些链接中粘贴视图
-
这里是从 urls 文件中截取的: url(r'^logout/$', auth_views.logout, {'template_name': 'registration/logout.html'}, name='auth_logout' ),
-
我发现了如何判断 django 版本,结果是:(1,2,0, 'beta', 1)
标签: python django templates authentication django-registration