TypeError:'bool'对象不可调用g.user.is_authenticated()

时间:2015-10-11 06:08:38

标签: python flask flask-login

我正在尝试在Flask应用程序中执行此操作。但我收到这样的错误

TypeError: 'bool' object is not callable. 

以下是相应的代码:

@app.before_request
def before_request():
    g.user = current_user
    if g.user.is_authenticated():
       g.search_form = None

2 个答案:

答案 0 :(得分:23)

尝试将if g.user.is_authenticated():替换为if g.user.is_authenticated:,如下所示:

@app.before_request
def before_request():
    g.user = current_user
    if g.user.is_authenticated:
       g.search_form = None

来自the document

  

<强> is_authenticated

     

如果用户已通过身份验证,则返回True,即他们已提供有效凭据。 (只有经过身份验证的用户才能满足login_required的条件。)

正如文件所述, is_authenticated 是一个布尔值(TrueFalse)。

然而,过去是一个功能but it has been changed to boolean at version 3.0

  

<强> BREAKING:
  is_authenticatedis_activeis_anonymous
  用户类的成员现在是属性,而不是方法。应用程序应更新     相应的用户类。

答案 1 :(得分:3)

这是因为is_authenticated不是一个函数,而只是一个布尔值。请尝试以下方法:

@app.before_request
def before_request():
    g.user = current_user
    if g.user.is_authenticated:
       g.search_form = None