gpt4 book ai didi

python - Flask-Login 引发 TypeError : 'bool' object is not callable when trying to override is_active property

转载 作者:太空狗 更新时间:2023-10-29 20:35:11 24 4
gpt4 key购买 nike

我想修改 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

最佳答案

is_activeis_anonymousis_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 来停用用户。返回列值的想法很好。

关于python - Flask-Login 引发 TypeError : 'bool' object is not callable when trying to override is_active property,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32750526/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com