我想在Flask-Login中修改is_active
,以便用户不会始终处于活动状态。
默认值始终返回True
,但我更改了它以返回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
答案 0 :(得分:24)
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
属性返回False
来停用该用户。您想要返回列的值很好。
答案 1 :(得分:0)
重载is_active
以实现自己的逻辑。
它出了什么问题?没什么IMO。这是正确的,除非您忘记使用@property
装饰器
在龙卷风中,它与current_user
类似。