烧瓶中的“TypeError:'bool'对象不可调用”

时间:2014-10-11 09:49:04

标签: python flask flask-sqlalchemy flask-login

我的is_active = db.Column(db.Boolean(), nullable=False)用户模型中有flask app字段现在登录时,我收到错误TypeError: 'bool' object is not callable

回溯

.
.
.
File "/home/environments/flask0101/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/home/flask/myapp/app/auth/views.py", line 15, in  login
login_user(user)
File "/home/environments/flask0101/lib/python2.7/site-packages/flask_login.py", line 675, in login_user
if not force and not user.is_active():
TypeError: 'bool' object is not callable

问题是什么?

3 个答案:

答案 0 :(得分:6)

is_active是bool对象。

>>> is_active = True
>>> is_active()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'bool' object is not callable

只需将其用作谓词,而不是将其称为:

if not force and not user.is_active:
    ...

答案 1 :(得分:6)

Flask-Login 0.3 contains a breaking change,它将is_activeis_anonymousis_authenticated从函数更改为属性。如果您现在升级,则不会再出现is_active列无法调用的错误,您可以将其保留为列。如果您想要更改行为,可以使用@property装饰您编写的方法。

答案 2 :(得分:-1)

鉴于原始问题的发布日期,我不认为0.3更新是问题。它确实帮助了我。谢谢大卫!

我发现即使是最新版本的v0.3.2,我发现这个中断更改会使Flask Security快速启动代码出错。我暂时卸载并降级到0.2.11版本。

pip install flask_login==0.2.11