[英]How can I know if a specific user, not the current requesting user, is logged in Django?
如何知道特定用戶是否登錄Django(不是當前請求的用戶)?
我試過這個:
user = User.objects.get(username="jon")
if user.is_authenticated():
print "user logged"
但如果username
匹配,則總是返回True
。
簡短的回答是你不能; 至少沒有任何內置於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跟蹤 。
沒有內置的方法來執行您正在尋找的內容,但是有一個應用程序,您可以插入到您的項目,讓您做你想要的。 它被稱為django-tracking,你可以在這里找到它: https : //github.com/codekoala/django-tracking
編輯哎呀! 我被擊敗了,但基本上是Mark Lavin所說的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.