特定のユーザがDjangoにログインしているかどうかを知るにはどうしたらいいですか?現在の要求ユーザではなく、特定のユーザがDjangoにログインしているかどうかを知る方法はありますか?
私はこの試みた:
user = User.objects.get(username="jon")
if user.is_authenticated():
print "user logged"
をしかしusername
が一致した場合、これは常にTrue
を返します。
特定のユーザがDjangoにログインしているかどうかを知るにはどうしたらいいですか?現在の要求ユーザではなく、特定のユーザがDjangoにログインしているかどうかを知る方法はありますか?
私はこの試みた:
user = User.objects.get(username="jon")
if user.is_authenticated():
print "user logged"
をしかしusername
が一致した場合、これは常にTrue
を返します。
あなたが探していることを行うための組み込みメソッドはありませんが、あなたが望むことができるようにプロジェクトにプラグインできるアプリがあります。これはDjangoトラッキングと呼ばれ、ここで見つけることができます:https://github.com/codekoala/django-tracking
EDITおっと!私はそれに打ち勝ったが、基本的にMark Lavinが言ったことだ。
短い答えはできません。少なくともDjangoに組み込まれているものではありません。データベース内のユーザーがログインしているかどうかを確認するには、基本的にユーザーがアクティブなセッションに拘束されているかどうかを確認する必要があります。しかし、この情報はpickledデータとして保存されるため、ユーザーIDのセッションテーブル(すべてのアクティブなセッションのクエリには不足)を照会することはできません。これを行ってもセッションクッキーの持続時間(デフォルトは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
誰にでも落札した人には、これは良い質問だと思います(私は票が足りません)。彼は自分が試したことを示し、なぜ彼が彼のために働いていないのかを教えてくれました。 – agf
あなたはどのようなクラスでログインしていますか?たいていの場合、これを知りたければ、最後にログインしてからログアウトしていないだけでなく、アクティブであるかどうかを知りたい場合は、最後にページを閲覧してからの経過時間はアクティブですか? –