用户身份验证模板标签不工作-Django

时间:2011-05-21 06:21:32

标签: python django django-templates django-views django-authentication

我使用了django-registration app。一切都很顺利。用户通过电子邮件验证进行注册,但当用户登录并重定向到主页时,{%if user.is_authenticated%}等身份验证模板标记将返回false。

我在我的login.html

中有这个
<input type="hidden" name="next" value="/" />

登录后,我想将用户重定向到主页和mainpage.html

{% if user.is_authenticated %}
     <p>Welcome, {{ user.username }}. Thanks for logging in.</p>
{% else %}
    <p>Welcome, new user. Please log in.</p>  
{% endif %}

但user.is_authenticated在这里返回false。这可能是什么问题?感谢

3 个答案:

答案 0 :(得分:2)

请尝试使用{% if request.user.is_authenticated %}。完全有可能用户没有被传递到视图中的上下文字典中。如果在模板中找不到对象,它将跳转到块的else部分。

,django中的渲染模板很奇怪,因为通常会出现例外情况

答案 1 :(得分:0)

你能告诉我们处理URL'/'的视图的代码吗?我认为这是你的问题所在,而不是你使用django-registration。

此视图是否将user置于上下文中?如果要在模板中使用它,则必须将其放入。如果要在上下文中使用request,则需要确保传递{{1的实例作为上下文而不仅仅是标准的上下文对象。

答案 2 :(得分:0)

这对我有用。

假设main page

中的视图处理了您的views.py
from django.shortcuts import render_to_response

def mainpage(request):
    return render_to_response('mainpage.html')

您需要添加RequestContext以包含到用户对象。将您的观点更改为

from django.shortcuts import render_to_response
from django.template import RequestContext

def mainpage(request):
    return render_to_response('mainpage.html', context_instance=RequestContext(request))