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

Django doesn't remember authenticated user

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

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)

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

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