我的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
问题是什么?
答案 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_active
,is_anonymous
和is_authenticated
从函数更改为属性。如果您现在升级,则不会再出现is_active
列无法调用的错误,您可以将其保留为列。如果您想要更改行为,可以使用@property
装饰您编写的方法。
答案 2 :(得分:-1)
鉴于原始问题的发布日期,我不认为0.3更新是问题。它确实帮助了我。谢谢大卫!
我发现即使是最新版本的v0.3.2,我发现这个中断更改会使Flask Security快速启动代码出错。我暂时卸载并降级到0.2.11版本。
pip install flask_login==0.2.11