Flask-Login raises TypeError: 'bool' object is not callable when trying to override is_active property
Flask-Login raises TypeError: 'bool' object is not callable when trying to override is_active property
我想在 Flask-Login 中修改 is_active
,这样用户就不会一直处于活动状态。
默认总是returns True
,但我把它改为return banned
列的值。
根据文档,is_active
应该是 属性。但是,内部 Flask-Login 代码引发:
TypeError: 'bool' object is not callable
尝试使用 is_active
时。
如何正确使用is_active
停用某些用户?
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
以实现您自己的逻辑。
有什么问题吗?没有海事组织。它是正确的,除了你忘记使用 @property
装饰器
使它成为 属性
例如,在 Tornado 中它类似于 current_user
。
is_active
、is_anonymous
和 is_authenticated
都是 Flask-Login 0.3 的属性。如果要使用它们,请将它们视为属性,不要调用它们。如果你想覆盖它们,记得用 @property
.
装饰它们
# change from
current_user.is_authenticated()
# to
current_user.is_authenticated
看来您正在阅读最新版本 (0.3) 的文档,但使用的是旧版本的库。版本 0.3 contains a breaking change 将这些属性从方法更改为属性。您应该升级到最新版本的 Flask-Login 并将它们视为属性。
您通过使用户的 is_active
属性 变为 return False
来停用用户。您对 return 列值的想法很好。
我想在 Flask-Login 中修改 is_active
,这样用户就不会一直处于活动状态。
默认总是returns True
,但我把它改为return banned
列的值。
根据文档,is_active
应该是 属性。但是,内部 Flask-Login 代码引发:
TypeError: 'bool' object is not callable
尝试使用 is_active
时。
如何正确使用is_active
停用某些用户?
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
以实现您自己的逻辑。
有什么问题吗?没有海事组织。它是正确的,除了你忘记使用 @property
装饰器
例如,在 Tornado 中它类似于 current_user
。
is_active
、is_anonymous
和 is_authenticated
都是 Flask-Login 0.3 的属性。如果要使用它们,请将它们视为属性,不要调用它们。如果你想覆盖它们,记得用 @property
.
# change from
current_user.is_authenticated()
# to
current_user.is_authenticated
看来您正在阅读最新版本 (0.3) 的文档,但使用的是旧版本的库。版本 0.3 contains a breaking change 将这些属性从方法更改为属性。您应该升级到最新版本的 Flask-Login 并将它们视为属性。
您通过使用户的 is_active
属性 变为 return False
来停用用户。您对 return 列值的想法很好。