0

我有一个代码,每当用户填写登录表单而不是表单将呈现到主页时,我都有登录表单。但我想在登录的主页上打印用户名。

视图.py:

这是登录功能,当用户填写登录表单时,它会验证值并呈现到主页。

def userLogin(request,template=None,context=None):
    if request.user.is_authenticated():
        return HttpResponseRedirect('/home/')
    if request.method == 'POST':
        form = userLoginform(request.POST)
        if form.is_valid():
#           authenticated_user = form.save()
#           login(request, authenticated_user)
            return HttpResponseRedirect("/home/")
        else:
            template=u"registration/login.html"
            context= {"form": form}
            return render(request, template,context)
    else:
        form=userLoginform()
        template=u"registration/login.html"
        context= {"form": form}
    return render(request, template,context)

每当我使用此代码时,用户已正确登录但会话值不起作用,当我在主页中使用 {{ user.username }} 时,它不会显示会话值。

4

1 回答 1

1

就像约瑟夫建议的那样,您需要将 request.user 设置为上下文,例如:

    context= {"form": form, "user": request.user}
    return render(request, template,context)

因此,在您的模板中,您将能够访问{{ user.username }}

您可以查看有关如何使用 django 的身份验证系统的完整文档

希望这会有所帮助

于 2013-08-22T14:22:57.963 回答