当前位置: 首页 > 知识库问答 >
问题:

Flask 视图引发 TypeError: 'bool' 对象不可调用

傅安宁
2023-03-14

我正在尝试调试 Flask 应用中返回 500 状态的视图,错误为 TypeError:'bool' 对象在回溯中不可调用。视图调用来自 Flask-Login 的login_user然后返回 True 以指示登录成功。

我已经调试到app_iter = app(environ,start_response),并且该应用程序现在是值为True的布尔值,而不是Flask应用程序对象。

Traceback (most recent call last):
  File "D:\Python27\lib\site-packages\flask\app.py", line 1836, in __call__
    return self.wsgi_app(environ, start_response)
  File "D:\Python27\lib\site-packages\flask\app.py", line 1820, in wsgi_app
    response = self.make_response(self.handle_exception(e))
  File "D:\Python27\lib\site-packages\flask\app.py", line 1403, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "D:\Python27\lib\site-packages\flask\app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "D:\Python27\lib\site-packages\flask\app.py", line 1478, in full_dispatch_request
    response = self.make_response(rv)
  File "D:\Python27\lib\site-packages\flask\app.py", line 1577, in make_response
    rv = self.response_class.force_type(rv, request.environ)
  File "D:\Python27\lib\site-packages\werkzeug\wrappers.py", line 824, in force_type
    response = BaseResponse(*_run_wsgi_app(response, environ))
  File "D:\Python27\lib\site-packages\werkzeug\wrappers.py", line 57, in _run_wsgi_app
    return _run_wsgi_app(*args)
  File "D:\Python27\lib\site-packages\werkzeug\test.py", line 854, in run_wsgi_app
    app_iter = app(environ, start_response)
TypeError: 'bool' object is not callable
@app.route('/login', methods=['POST'])
def login():
    username = request.form['username']
    user = User.query.filter_by(username=username).first()

    if user:
        login_user(user)
        return True

    return False

共有1个答案

利俊迈
2023-03-14

在Flask中,视图必须返回以下内容之一:

  • 字符串
  • 响应对象(或子类)
  • (字符串、状态、标头)(字符串、状态)的元组
  • 有效的 WSGI 应用程序

Flask 测试前 3 个选项,如果它们不合适,则假定它是第四个选项。您在某个地方返回了 True,并且它被视为 WSGI 应用程序。

请参阅文档中的关于响应。

 类似资料:
  • 问题内容: 我试图调试我的应用程序中的视图,该视图返回500状态,并在追溯中出现错误。然后从进行的视图调用返回True以指示登录成功。 我进行了调试,直到,app现在是具有值True而不是Flask应用程序对象的布尔值。 问题答案: 在Flask中,视图必须返回以下之一: a string a Response object (or subclass) a tuple of (string, st

  • 问题内容: 我尝试在视图中使用,但收到错误`TypeError:’bool’对象不可调用。为什么会出现此错误,我该如何解决? 问题答案: 当您尝试表现对象的方法或功能时,会发生“对象不可调用”错误。 在这种情况下: 您将current_user.is_authenticated表现为一种方法,而不是一种方法。 您必须以这种方式使用它: 您在方法或函数(而不是对象)之后使用“()”。 在某些情况下,

  • 问题内容: 遇到一个似乎很普遍的问题,但我已经完成了研究,并且看不到它在任何地方都被完全重新创建了。当我打印时,我看到了所需的输出。但是,当我打电话给return时,它显示了这个错误。有任何想法吗?非常感谢您的帮助,谢谢。我正在使用Flask 。 这是Traceback(请记住上面的结果在打印): 问题答案: Flask只希望视图返回类似响应的对象。 这表示描述主体,代码和标题的,字符串或元组。您

  • 问题内容: 我正在尝试使用flask在浏览器中显示已连接设备的列表。我在端口8000上启用了flask: 在server.py中: 在app.py中: 这是我的测试: 但我不断收到此错误: 在检查ttyUSB,…和其他设备是否存在时,我做错什么了吗? 问题答案: 问题在于您的端点正在返回列表。Flask只喜欢某些返回类型。可能最常见的两个是 一个对象 一个(与Python 2.x一起使用) 您还可

  • 我可以从一个简单的脚本成功加载TextBlob模块,但不能从Flask应用程序加载。我将向您展示代码和错误。 加载一个简单的脚本工作: 从烧瓶应用程序加载时抛出错误: 错误: 我使用的是textblob版本0.11。0与pip一起安装。

  • 问题内容: 为什么会出现此错误?我很困惑。 你需要知道什么才能回答我的问题? 问题答案: 是一个包含的模块。 你需要执行以下操作: 这就是错误消息的含义: 它表示为,因为你的代码正在调用模块对象。模块对象是导入模块时得到的东西的类型。你试图做的是在模块对象中调用恰好与包含它的模块同名的类对象。 这是一种从逻辑上分解这种错误的方法: “ 告诉我我的代码试图调用无法调用的内容。我的代码试图调用什么?”