Wie erhalte ich die aktuell angemeldete Benutzer-ID?
in models.py
:
class Game(models.model):
name = models.CharField(max_length=255)
owner = models.ForeignKey(User, related_name='game_user', verbose_name='Owner')
in views.py
:
gta = Game.objects.create(name="gta", owner=?)
Antworten:
Zunächst stellen Sie sicher,
SessionMiddleware
undAuthenticationMiddleware
Middleware zu Ihrer hinzugefügtMIDDLEWARE_CLASSES
Einstellung.Der Strom
user
ist imrequest
Objekt, Sie können ihn erhalten durch:request.user
Sie erhalten einUser
Objekt, das den aktuell angemeldeten Benutzer darstellt. Wenn ein Benutzer derzeit nicht angemeldet ist,request.user
wird er auf eine Instanz von gesetztAnonymousUser
. Sie können sie mit dem Feldis_authenticated
wie folgt unterscheiden:quelle
User
Modellreferenz .Sie können mit dem folgenden Code auf den aktuell angemeldeten Benutzer zugreifen:
quelle
Angenommen, Sie beziehen sich aus Ihrer Sicht auf Djangos Auth-Benutzer :
quelle
Ich habe dies in einer Ajax-Ansicht geschrieben, aber es ist eine ausführlichere Antwort, die die Liste der aktuell angemeldeten und abgemeldeten Benutzer enthält.
Das
is_authenticated
Attribut wird immerTrue
für meine Benutzer zurückgegeben, was vermutlich erwartet wird, da es nur nach anonymen Benutzern sucht. Dies erweist sich jedoch als nutzlos, wenn Sie sagen, dass Sie eine Chat-App entwickeln, in der angemeldete Benutzer angezeigt werden müssen.Dadurch wird nach abgelaufenen Sitzungen gesucht und anhand des decodierten
_auth_user_id
Attributs ermittelt , zu welchem Benutzer sie gehören :quelle