Ich schaue mir diese Website an , kann aber anscheinend nicht herausfinden, wie das geht, da es nicht funktioniert. Ich muss überprüfen, ob der aktuelle Site-Benutzer angemeldet (authentifiziert) ist, und versuche:
request.user.is_authenticated
Obwohl sichergestellt ist, dass der Benutzer angemeldet ist, wird nur Folgendes zurückgegeben:
>
Ich kann andere Anfragen stellen (aus dem ersten Abschnitt der obigen URL), wie zum Beispiel:
request.user.is_active
Dies gibt eine erfolgreiche Antwort zurück.
python
django
authentication
Rick
quelle
quelle
Antworten:
Update für Django 1.10+ :
is_authenticated
ist jetzt ein Attribut in Django 1.10. Die Methode ist aus Gründen der Abwärtskompatibilität weiterhin vorhanden, wird jedoch in Django 2.0 entfernt.Für Django 1.9 und älter :
is_authenticated
ist eine Funktion. Du solltest es so nennenWie Peter Rowell betonte, kann es sein, dass Sie in der Standard-Django-Vorlagensprache keine Klammern verwenden, um Funktionen aufzurufen. Vielleicht haben Sie so etwas im Vorlagencode gesehen:
Im Python-Code handelt es sich jedoch tatsächlich um eine Methode in der
User
Klasse.quelle
Django 1.10+
Verwenden Sie ein Attribut, keine Methode:
Die Verwendung der gleichnamigen Methode ist in Django 2.0 veraltet und wird in der Django-Dokumentation nicht mehr erwähnt.
Beachten Sie, dass für Django 1.10 und 1.11 der Wert der Eigenschaft a
CallableBool
und kein Boolescher Wert ist , was einige seltsame Fehler verursachen kann. Zum Beispiel hatte ich eine Ansicht, die JSON zurückgabdass nach der Aktualisierung der Eigenschaft
request.user.is_authenticated
die Ausnahme ausgelöst wurdeTypeError: Object of type 'CallableBool' is not JSON serializable
. Die Lösung bestand darin, JsonResponse zu verwenden, das das CallableBool-Objekt bei der Serialisierung ordnungsgemäß verarbeiten kann:quelle
request.user
. Ob ein Benutzer angemeldet ist oder nicht, spielt nur eine Rolle im Kontext der Anforderung, beispielsweise der Browsersitzung.Der folgende Block sollte funktionieren:
quelle
Aus Ihrer Sicht:
Fügen Sie in Ihren Controller-Funktionen Dekorator hinzu:
quelle
request.user.is_authenticated
wenn Sie wissen, dass Ihre Anwendung den Benutzer immer abmeldetWenn Sie in Ihrer Vorlage nach authentifizierten Benutzern suchen möchten, gehen Sie wie folgt vor:
quelle
Verwenden Sie für Django 2.0+ Versionen:
Weitere Informationen finden Sie unter https://www.django-rest-framework.org/api-guide/requests/#auth
request.user.is_authenticated () wurde in Django 2.0+ Versionen entfernt.
quelle
request.user.is_authenticated
Ist noch gültig. Sie verweisen auf Django-Rest-Framework-Dokumentation, nicht auf Django