如何检查哪个用户使用 Django 登录?

Posted

技术标签:

【中文标题】如何检查哪个用户使用 Django 登录?【英文标题】:How to check which user is logged in with Django? 【发布时间】:2021-04-02 22:28:17 【问题描述】:

我目前在一个网站上工作,我想知道如何检查哪个用户已登录。只是为了澄清我正在使用 Django 内置模型 from django.contrib.auth.models import User 来做我的 login, logout etc. 我不做的事情'不知道怎么做是检查哪个用户登录,我知道方法

if user.is_authenticated:
    # Other code goes here

但是这个方法只检查用户登录的天气而不是哪个用户登录?

【问题讨论】:

request.user 是登录用户。 粗略方法:你可以获取所有用户并循环访问他们,删除未登录的用户:users=User.objects.filter(active=True) for user in users:users.exclude(pk=user.pk) if user.is_authenticated()==False else pass 【参考方案1】:

如果你使用AuthenticationMiddleware [Django-doc](如果你创建一个新项目,这是默认的),那么这个中间件会在请求中添加一个.user attribute [Django-doc]。这是一个延迟加载的用户模型对象,如果用户尚未登录,则为 AnonymousUser [Django-doc]。

但是,如果用户因此登录,这是一个用户模型对象,就像任何其他人一样。因此,您可以从该对象访问字段、方法等,并在创建对象时使用它以让 ForeignKey 引用该用户。

例如,如果您使用默认的User model [Django-doc],则可以访问request.user.first_namerequest.user.last_namerequest.user.username 等属性。

【讨论】:

【参考方案2】:

您可以在 request.user 方法中找到有关登录用户的信息

如果你想知道用户名,这里是一个例子:

username = request.user.username

【讨论】:

非常感谢,这是我的问题的解决方案

以上是关于如何检查哪个用户使用 Django 登录?的主要内容,如果未能解决你的问题,请参考以下文章

自用户上次登录Django以来如何检查新帖子

如何在管理面板中第一次登录django员工用户?

如何结合突变在 django-graphql-jwt 中创建或登录用户?

如何在 Laravel 5 中登录时检查用户状态?

如何使用 django-rest-framework 进行社交登录? [关闭]

检查是不是有人登录 Django