【问题标题】:TypeError: 'bool' object is not callable g.user.is_authenticated() [duplicate]TypeError:'bool'对象不可调用g.user.is_authenticated()[重复]
【发布时间】:2016-01-08 19:26:04
【问题描述】:

我正在尝试在我的 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

【问题讨论】:

  • 这个问题不是重复的。

标签: python flask flask-login


【解决方案1】:

尝试将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

突破:
is_authenticatedis_activeis_anonymous
用户类的成员现在是属性,而不是方法。应用程序应更新 相应的用户类别。

【讨论】:

  • 我在 django 上遇到了同样的问题。将“is_authenticated”作为属性而不是作为方法调用来解决它。谢谢凯文!
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-22
    • 2019-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 2014-02-19
    相关资源
    最近更新 更多