答案 0 :(得分:13)
您应该检查您的查看功能,以查看user
变量的来源。除非您从视图中专门将user
传递到上下文中,否则这就是您的问题。
你做可以访问request.user
,并且在从具有@login_required
装饰器的视图呈现的模板中始终返回true。
我可以告诉你确定装饰器没有任何问题的原因是User
和AnonymousUser
的代码(位于django.contrib.auth.models
){{{ 1}}方法严格为is_authenticated
返回true,为User
严格返回false。装饰者不会也不能改变它。这意味着您的模板实际上并未获得AnonymousUser
对象,而您正在检查User
。
答案 1 :(得分:8)
接下来是Gabriel的回答,来自auth上下文处理器的user
变量是什么?如果是,并且您使用的是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))