Die kurze Antwort ist, dass Sie nicht können; zumindest nicht mit etwas, das in Django eingebaut ist. Um zu wissen, ob ein Benutzer in der Datenbank angemeldet ist, fragen Sie im Wesentlichen, ob der Benutzer an eine aktive Sitzung gebunden ist. Sie können jedoch die Sitzungstabelle für die Benutzer-ID nicht abfragen (keine Abfrage aller aktiven Sitzungen), da diese Informationen als gebeizte Daten gespeichert sind. Und selbst wenn Sie dies getan haben, ist das nicht ganz sinnvoll, abhängig davon, wie lange der Sitzungscookie dauert (Standard 2 Wochen).
Was können Sie also tun? Eine Sache, die Sie über den Benutzer abfragen kann, ist das letzte Mal, wenn sie angemeldet Zum Beispiel könnten Sie Benutzer erhalten, die in weniger als 10 Minuten vor zuletzt eingeloggt.
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)
Eine andere Sache, die Sie tun können, ist dies auf eigene Faust verfolgen . In der Tat gibt es eine App, die genau das nennt django-tracking.
@linker Nein, es ist kein Duplikat davon. Diese Person hat auf die Funktion verwiesen, sie aber nicht aufgerufen. Rayashi nennt die Funktion eindeutig korrekt. – agf
Wer auch immer abgelehnt - ich denke, das ist eine gute Frage (Ich habe keine Stimmen mehr). Er zeigte, was er versuchte, und erzählte uns, warum das nicht für ihn funktionierte. – agf
Was klassieren Sie als eingeloggt? Wenn Sie dies wissen möchten, möchten Sie meistens wissen, ob sie aktiv sind - nicht nur, wenn sie sich seit dem letzten Login nicht abgemeldet haben. Wenn ja, wie lange seit sie zuletzt eine Seite angesehen haben, zählt aktiv? –