2014-10-11 115 views
4

我在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 

在用户模式is_active = db.Column(db.Boolean(), nullable=False)场什么是问题吗?

回答

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: 
    ... 
+2

但是,这是在'LIB/python2.7 /站点包线/ flask_login.py'这是当我打电话'login_user(用户)'执行烧瓶文件。我如何登录一个用户而不是'from flask.ext.login import login_user' 然后'login_user(user)'? – Alexxio 2014-10-11 09:58:17

+0

@Alexxio,如何包装一个对象,提供'is_active'方法的另一个对象? – falsetru 2014-10-11 10:01:22

+0

是的,只是做到了。非常感谢。 – Alexxio 2014-10-11 10:05:04

6

烧瓶登录0.3 contains a breaking change从而改变is_activeis_anonymous,并且is_authenticated从功能到性能。如果您现在升级,则不会再出现is_active列无法调用的错误,您可以将其保留为列。如果你想改变行为,你可以用@property来修饰你写的方法。

-1

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

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

pip install flask_login==0.2.11 
+0

是的,Flask-Security尚未更新。最终的解决方案不是降级Flask-Login,因为它只是前进,而是修复Flask-Security和其他依赖于旧行为的代码。已经有相关的项目回购错误报告。 – davidism 2015-10-10 12:55:40

+0

无赖放下投票。我和其他许多其他人一样,现在并不是真的有能力去解决烧瓶安全问题。我只是试图通过烧瓶安全文件来让我的网站启动并运行。无论如何,你的原始答案是有帮助的。谢谢。 – ScottU 2015-10-18 15:07:39

相关问题