【问题标题】:Get current user in view获取当前用户在视图中
【发布时间】:2014-06-20 11:58:17
【问题描述】:

我正在使用 django 身份验证来登录用户:

def signin(request):
        if request.method == "POST":
                username = request.POST.get("username").lower()
                password = request.POST.get("password").lower()
                user = authenticate(username = username, password=password)

但是,我似乎无法在任何其他视图中访问当前用户。在每个模板中,我都可以访问用户,但我似乎无法访问视图本身。例如,在另一条路线中,我希望能够执行以下操作:

def profile(request):
        skills = hasSkill.objects.filter(user__username=user.username)
        return render(request, "/profile.html", {"skills" : skills})

但我不断收到用户是 Nonetype 对象的错误。有什么想法吗?

【问题讨论】:

    标签: python django django-views django-authentication


    【解决方案1】:

    您需要通过获得的request 访问user。您将使用 request.user 将您的视图更改为:

    def profile(request):
            skills = hasSkill.objects.filter(user__username=request.user)
            return render(request, "/profile.html", {"skills" : skills})
    

    Django 文档herehere

    Django 使用会话和中间件来挂钩身份验证系统 进入请求对象。

    这些为每个请求提供 request.user 属性 代表当前用户。如果当前用户没有登录, 此属性将设置为 AnonymousUser 的实例,否则 它将是 User 的一个实例。

    【讨论】:

    • 哇,很惊讶我错过了它,因为它是如此明显。谢谢,亚历克斯!
    • 没问题,发生在我们所有人身上!
    猜你喜欢
    • 2012-02-26
    • 2015-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2013-01-03
    • 2017-12-11
    相关资源
    最近更新 更多