Django不记得经过身份验证的用户

时间:2015-04-10 03:05:44

标签: django django-views

我有一个简单的登录功能。

def login(request):
    args = {}
    args.update(csrf(request))
    if request.POST:
        username = request.POST['username']
        password = request.POST['password']
        user = auth.authenticate(username=username, password=password)
        if user is not None:
            auth.login(request, user)
            return redirect('/')
        else:
            return redirect('/')
    else:
        return redirect('/')

在我的模板中,我使用if语句仅为经过身份验证的用户显示一些块:

{% if username %}
    <div class="container">
        <div class="span6">Welcome!<strong> {{ username }}</strong></div>
{% endif %}

但是当我成功登录时,不会显示此块。我想redirect('/')的问题。如果是这样,那我就不明白了:当我重定向到主页面时,那么用户已经注销了? 对于主页面,我使用下一个视图:

def index(request):
    args = {}
    args.update(csrf(request))
    return render(request, 'index.html', args)

1 个答案:

答案 0 :(得分:0)

使用user上下文变量显示用户名。并且应该使用用户实例的is_authenticated()方法来确定匿名用户:

{% if user.is_authenticated %}
    Welcome! <strong>{{ user.username }}</strong>
{% endif %}