如何知道某個特定用戶是否在Django中登錄(不是當前的請求用戶)?如何知道是否在Django中登錄了特定用戶而不是當前請求用戶?
我嘗試這樣做:
user = User.objects.get(username="jon")
if user.is_authenticated():
print "user logged"
但這總是返回True
如果username
匹配。
如何知道某個特定用戶是否在Django中登錄(不是當前的請求用戶)?如何知道是否在Django中登錄了特定用戶而不是當前請求用戶?
我嘗試這樣做:
user = User.objects.get(username="jon")
if user.is_authenticated():
print "user logged"
但這總是返回True
如果username
匹配。
沒有內置的方法來執行您正在查找的內容,但是有一個應用程序可以插入到您的項目中,讓您按照自己的需要進行操作。這就是所謂的django跟蹤,你可以在這裏找到它:https://github.com/codekoala/django-tracking
編輯哎呀!我被打敗了,但基本上是馬克拉文所說的。
簡短的回答是你不能;至少沒有內置到Django的任何東西。要知道數據庫中的任何用戶是否已登錄,實質上是詢問用戶是否與活動會話綁定。但是,您不能查詢會話表(僅查詢所有活動會話),因爲此信息存儲爲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。
@linker不,它不是重複的。那個人正在引用這個函數,但沒有調用它。 rayashi明確地調用了該函數。 – agf 2012-04-14 20:13:59
對於誰downvoted - 我認爲這是一個很好的問題(我沒票了)。他展示了他所嘗試的,並告訴我們爲什麼這不適合他。 – agf 2012-04-14 20:18:58
你上課時怎麼上課?大多數情況下,如果你想知道這一點,你想知道他們是否活躍 - 不僅僅是他們自上次登錄以來沒有註銷過。如果是這樣,自從他們上次查看頁面起,多長時間計爲活性? – 2012-04-14 20:20:03