如何知道特定用户是否登录Django(不是当前请求的用户)?
我试过了:
user = User.objects.get(username="jon")
if user.is_authenticated():
print "user logged"
但如果True
匹配,则总会返回username
。
答案 0 :(得分:4)
简短的回答是你不能;至少没有任何内置于Django的内容。要知道数据库中的任何用户是否已登录,您实际上是在询问用户是否与活动会话绑定。但是您无法查询会话表(缺少查询所有活动会话)的用户ID,因为此信息存储为pickle数据。即使你这样做也不完全有意义,具体取决于会话cookie持续多长时间(默认为2周)。
那你能做什么?您可以查询有关用户的一件事是他们最后一次登录。例如,您可以在不到10分钟前获得最后登录的用户:
from datetime import datetime, timedelta
from django.contrib.auth.models import User
cutoff = datetime.now() - timedelta(minutes=10)
active = User.objects.filter(last_login__gt=cutoff)
您可以做的另一件事就是自己跟踪。事实上,有一个应用程序就是这样做的django-tracking。
答案 1 :(得分:1)
没有内置方法来执行您正在寻找的内容,但是有一个应用程序可以插入到您的项目中,让您可以执行您想要的操作。它被称为django-tracking,你可以在这里找到它:https://github.com/codekoala/django-tracking
编辑哎呀!我被击败了,但基本上是Mark Lavin所说的。