如何检查哪个用户使用 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_name
、request.user.last_name
、request.user.username
等属性。
【讨论】:
【参考方案2】:您可以在 request.user 方法中找到有关登录用户的信息
如果你想知道用户名,这里是一个例子:
username = request.user.username
【讨论】:
非常感谢,这是我的问题的解决方案以上是关于如何检查哪个用户使用 Django 登录?的主要内容,如果未能解决你的问题,请参考以下文章
如何结合突变在 django-graphql-jwt 中创建或登录用户?