python - example - login flask
Flask-Login aumenta TypeError: el objeto ''bool'' no es invocable al intentar anular la propiedad is_active (2)
Sobrecarga
is_active
para implementar su propia lógica.
¿Qué tiene de malo?
Nada de la OMI.
Es correcto, excepto que olvidó convertirlo en una propiedad utilizando
@property
decorator
En Tornado es similar a
current_user
por ejemplo.
Quiero modificar
is_active
en Flask-Login para que los usuarios no siempre estén activos.
El valor predeterminado siempre devuelve
True
, pero lo cambié para devolver el valor de la columna
banned
.
Según los documentos,
is_active
debería ser una propiedad.
Sin embargo, el código interno de Flask-Login aumenta:
TypeError: ''bool'' object is not callable
Al intentar usar
is_active
.
¿Cómo uso correctamente
is_active
para desactivar algunos usuarios?
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
banned = db.Column(db.Boolean, default=False)
@property
def is_active(self):
return self.banned
login_user(user, form.remember_me.data)
if not force and not user.is_active():
TypeError: ''bool'' object is not callable
is_active
,
is_anonymous
, y
is_authenticated
son todas propiedades a partir de Flask-Login 0.3.
Si desea usarlos, trátelos como atributos, no los llame.
Si desea anularlos, recuerde decorarlos con
@property
.
# change from
current_user.is_authenticated()
# to
current_user.is_authenticated
Parece que está leyendo los documentos de la versión más reciente (0.3), pero está utilizando una versión anterior de la biblioteca. La versión 0.3 contiene un cambio importante que cambió estos atributos de métodos a propiedades. Debe actualizar a la última versión de Flask-Login y tratarlos como propiedades.
Desactiva al usuario haciendo que su propiedad
is_active
devuelva
False
.
Su idea de devolver el valor de una columna está bien.