我正在玩django auth库,我遇到了一些我不理解的东西。
我有一个主模板base.html
,在这个模板中我有以下代码:
{% if user.is_authenticated %}
Welcome {{user.username}}, <a href='/accounts/logout/'>Logout</a>
{% else %}
Welcome Guest, Please <a href='/accounts/login/'>Login</a>
{% endif %}
在标题中的每个页面上重复此操作。然而,在我登录后,除了登录页面本身之外,它显示welcome guest...
字符串,就像没有经过身份验证的用户一样。
然而,令人困惑的是,auth库似乎在其他地方正在执行其工作,我无法访问登录保护功能,并且我可以在登录后等。
谁能告诉我哪里出错?
答案 0 :(得分:3)
来自the docs:
从技术上讲,如果您使用
RequestContext
并且TEMPLATE_CONTEXT_PROCESSORS
设置包含"django.contrib.auth.context_processors.auth"
(默认设置),则这些变量仅在模板上下文中可用。有关更多信息,请参阅RequestContext docs。
答案 1 :(得分:1)
请提供访问此模板的views.py
代码。但如果我的猜测是正确的,您可能无法将user
实例传递给模板。
如果没有特定变量,Django Templates会将其视为False。
你需要这样做 -
...
var = RequestContext(request,'somevar':somevar})
return render_to_response('somehtml.html', var)
答案 2 :(得分:1)
“user”的值不在您的上下文中。通用视图(如标准登录名)已经传递了RequestContext实例。
您需要create your own,然后在渲染模板时传递该字典的实例。通用视图会自动执行此操作。