您好我尝试在我的基本模板中使用用户对象,但用户对象每次都会在登录页面后返回空值
请在此处找到我的代码:
查看:
def loginView(request):
if request.POST:
username = request.POST['username']
password = request.POST['password']
user = authenticate(username =username, password = password)
if user is not None:
if user.is_active:
login(request, user)
return HttpResponseRedirect('/rango/home/')
else:
print 'No user exist'
else:
c= {}
c.update(csrf(request))
return render_to_response('login.html', c)
基本模板
<diV style="float: left;">
{% block sidebar %}
<div>
{% if user.is_authenticated %}
<a href="{%url 'addCategory' %}">Add Category</a></br>
<a href="{%url 'logout' %}">Logout</a>
{% endif %}
<a href="{%url 'register'%}">Register</a></br>
<a href="{%url 'login'%}">Login</a></br>
<a href="{%url 'about' %}" >About</a></br>
</div>
{% endblock %}
</diV>
答案 0 :(得分:2)
将您的代码更改为
return render_to_response('login.html', c,
context_instance=RequestContext(request))
如果没有context_instance
,Django将不会在模板上下文中添加默认上下文处理器数据。所以你没有在模板中获得user
个对象。
答案 1 :(得分:0)
在模板中试用{% if request.user.is_authenticated %}
。
答案 2 :(得分:0)
如果您确保启用了django.contrib.auth.context_processors.auth
处理器,则应该在模板中提供user
变量。
默认情况下启用此处理器,但如果您的设置中覆盖了TEMPLATE_CONTEXT_PROCESSORS
,则可能已将其禁用。