Mic*_*isy 5 django django-users
在我的模板中,我有以下内容:
<ul class="tabbed" id="network-tabs">
{% if user.is_authenticated %}
<li><a href="{% url acct-my-profile %}">My Account</a></li>
<li><a href="{% url acct-logout %}">Log Out</a></li>
{% else %}
<li><a href="{% url acct-login %}">Log in</a></li>
<li><a href="{% url acct-register %}">Register</a></li>
{% endif %}
</ul>
Run Code Online (Sandbox Code Playgroud)
它似乎工作正常,除非创建的页面有一个@login_required装饰器,在这种情况下页面工作正常,但导航显示就好像用户没有登录,即使它们是.
Gab*_*ley 13
您应该检查您的视图函数以查看user变量的来源.除非你专门user从视图中传入上下文,否则这就是你的问题.
但是,您确实可以访问request.user,并且在从具有@login_required装饰器的视图渲染的模板中始终返回true .
我可以告诉你确定装饰器没有任何问题的原因是,在方法的代码User和AnonymousUser(位于django.contrib.auth.models)中is_authenticated严格返回true User和false AnonymousUser.装饰者不会也不能改变它.这意味着你的模板实际上并没有得到User你正在检查的对象user.
user接下来是Gabriel的回答,变量来自auth上下文处理器吗?如果是,并且您正在使用render_to_response快捷方式,则需要使用RequestContext实例.
from django.template import RequestContext
...
@login_required
def some_view(request):
# ...
return render_to_response('my_template.html',
my_data_dictionary,
context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)