用户身份验证模板标签不起作用-Django
Posted
技术标签:
【中文标题】用户身份验证模板标签不起作用-Django【英文标题】:user auth template tags not working-Django 【发布时间】:2011-08-30 02:48:30 【问题描述】:我使用了 django-registration 应用程序。一切顺利。用户注册了电子邮件验证,但是当用户登录并被重定向到主页时,身份验证模板标签(例如 % 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。这里可能有什么问题?谢谢
【问题讨论】:
您是否正确传递了用户对象?这可能会导致它返回为 false 【参考方案1】:尝试改用% if request.user.is_authenticated %
。用户完全有可能没有被传递到视图中的上下文字典中。如果在模板中找不到对象,它将跳到块的 else 部分。渲染模板在 django 中很奇怪,因为通常情况下的异常会被吞没。
【讨论】:
我正在使用 django.contrib.auth.login 视图。我认为他们确实在他们的上下文字典中传递了用户。 ? @Nazim,你试过 request.user 了吗?【参考方案2】:您能否向我们展示处理 URL '/' 的视图的代码?我认为这是您的问题所在,而不是您使用 django-registration。
此视图是否将user
置于上下文中?如果要在模板中使用它,则必须将其放入。如果要在上下文中使用request
,则需要确保将RequestContext
的实例作为context 而不仅仅是一个标准的上下文对象。
【讨论】:
【参考方案3】:这对我有用。
假设您的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))
【讨论】:
以上是关于用户身份验证模板标签不起作用-Django的主要内容,如果未能解决你的问题,请参考以下文章
令牌身份验证在 django rest 框架上的生产中不起作用