我尝试在视图中使用is_authenticated()
,但得到错误“TypeError:' bool'对象不可调用。为什么我会收到此错误以及如何解决?
@auth.before_app_request
def before_request():
if current_user.is_authenticated() \
and not current_user.confirmed \
and request.endpoint[:5] != 'auth.' \
and request.endpoint != 'static':
return redirect(url_for('auth.unconfirmed'))
答案 0 :(得分:25)
"对象不可调用"当您尝试操作对象时,如果它是方法或函数,则会发生错误。
在这种情况下:
current_user.is_authenticated()
您将current_user.is_authenticated视为一种方法,但它不是一种方法。
你必须以这种方式使用它:
current_user.is_authenticated
你使用"()"在方法或功能之后,而不是对象。
在某些情况下,类可能会实现__call__
函数,您也可以调用它,然后它就可以调用。
答案 1 :(得分:9)
从Flask-Login 0.3.0(2015年9月10日发布)更改:
- BREAK:用户类的
is_authenticated
,is_active
和is_anonymous
成员现在是属性,而不是方法。 应用程序应相应地更新其用户类。
因此,您需要相应地更改user
课程和代码。