时间:2010-07-26 17:42:10

标签: django django-users

2 个答案:

答案 0 :(得分:13)

您应该检查您的查看功能,以查看user变量的来源。除非您从视图中专门将user传递到上下文中,否则这就是您的问题。

可以访问request.user,并且在从具有@login_required装饰器的视图呈现的模板中始终返回true。

我可以告诉你确定装饰器没有任何问题的原因是UserAnonymousUser的代码(位于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))
相关问题