Flask-Login löst TypeError aus: Das Objekt 'bool' kann nicht aufgerufen werden, wenn versucht wird, die Eigenschaft 'is_active' zu überschreiben

7

Ich möchte is_active in Flask-Login ändern, damit Benutzer nicht immer aktiv sind.

Der Standardwert gibt immer True zurück, aber ich habe ihn geändert, um den Wert der Spalte banned zurückzugeben.

Basierend auf den Dokumenten sollte is_active eine Eigenschaft sein. Der interne Flask-Login-Code wirft jedoch Folgendes auf:

%Vor%

Beim Versuch, is_active zu verwenden.

Wie verwende ich is_active , um einige Benutzer zu deaktivieren?

%Vor% %Vor%     
anvd 23.09.2015, 22:26
quelle

2 Antworten

21

is_active , is_anonymous und is_authenticated sind alle Eigenschaften wie bei Flask-Login 0.3. Wenn Sie sie verwenden möchten, behandeln Sie sie als Attribute, rufen Sie sie nicht an. Wenn Sie sie überschreiben möchten, denken Sie daran, sie mit @property zu dekorieren.

%Vor%

Es scheint, dass Sie die Dokumente für die neueste Version (0.3) lesen, aber eine ältere Version der Bibliothek verwenden. Version 0.3 enthält eine brechende Änderung , die diese Attribute von Methoden in Eigenschaften geändert hat. Sie sollten auf die neueste Version von Flask-Login upgraden und sie als Eigenschaften behandeln.

Sie deaktivieren den Benutzer, indem Sie die Eigenschaft is_active veranlassen, False zurückzugeben. Ihre Idee, den Wert einer Spalte zurückzugeben, ist in Ordnung.

    
davidism 23.09.2015, 23:11
quelle
0

Sie überladen is_active , um Ihre eigene Logik zu implementieren.

Was ist daran falsch? Nichts IMO. Es ist korrekt, außer dass Sie vergessen haben, es mit @property decorator

zu einer Eigenschaft zu machen

In Tornado ist es beispielsweise ähnlich wie current_user .

    
Anthony Perot 23.09.2015 22:48
quelle

Tags und Links