is_authenticated()引发TypeError TypeError:' bool'对象不可调用

时间:2015-10-07 03:07:04

标签: python flask flask-login

我尝试在视图中使用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'))

2 个答案:

答案 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_authenticatedis_activeis_anonymous成员现在是属性,而不是方法。   应用程序应相应地更新其用户类。
  •   

因此,您需要相应地更改user课程和代码。