2016-07-28 4 views
0

Ich habe den folgenden Code in meiner Ansichtsdatei.Warum gibt AnonymousUser True für is_authenticated in Django zurück?

if request.user.is_authenticated: 
    owner = request.user 
    if cart.owner != owner: 
     cart.owner = owner 
    cart.save() 

jedoch Gesicht ich folgende Fehlermeldung:

Cannot assign "<SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x103ff37b8>>": "Cart.owner" must be a "User" instance.

Warum Django läuft die Linie cart.owner = owner auch wenn der Benutzer nicht authentifiziert ist?

Antwort

3

is_authenticated ist eine Methode, Sie überprüfen nur, ob es eine Methode mit diesem Namen gibt, nicht ob Ihr Benutzer authentifiziert ist.

Sie müssen die Methode aufrufen.

if request.user.is_authenticated(): 
+1

Scheiße. Danke, Anfänger Fehler. :) – MiniGunnR

+1

Beachten Sie, dass sich 'is_authenticated' in Django 1.10 von einer Methode zu einem Attribut ändert, so dass Benutzer nicht dadurch erwischt werden, dass sie vergessen, sie aufzurufen. – Alasdair

Verwandte Themen