无法在基本模板中使用user.username

时间:2013-11-11 16:26:03

标签: python django

您好我尝试在我的基本模板中使用用户对象,但用户对象每次都会在登录页面后返回空值

请在此处找到我的代码:

查看:

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>

3 个答案:

答案 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,则可能已将其禁用。

相关问题