【问题标题】:KeyError: 'image_url' Traceback (most recent call last) Error in response of flask apiKeyError: 'image_url' Traceback (last recent call last) 烧瓶 api 响应错误
【发布时间】:2019-12-13 13:57:00
【问题描述】:

我有一个 React 应用来显示图像并对其进行裁剪。我正在使用烧瓶 api 发布该图像。当我在邮递员中运行我的 api 时,它工作正常,但是在从反应服务器(本地主机:3000)向后端服务器(本地主机:5000)发出请求时,它给出了这个响应。我的参数包括一个带有唯一参数 image_url 的 json。我该怎么做才能解决这个问题。请帮忙。谢谢,如果需要除此之外的任何代码,我会发布它。

Traceback (most recent call last):
  File "/home/ets/.local/lib/python3.6/site-packages/flask/app.py", line 2463, in __call__
    return self.wsgi_app(environ, start_response)
  File "/home/ets/.local/lib/python3.6/site-packages/flask/app.py", line 2449, in wsgi_app
    response = self.handle_exception(e)
  File "/home/ets/.local/lib/python3.6/site-packages/flask/app.py", line 1866, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/home/ets/.local/lib/python3.6/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/home/ets/.local/lib/python3.6/site-packages/flask/app.py", line 2446, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/ets/.local/lib/python3.6/site-packages/flask/app.py", line 1951, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/ets/.local/lib/python3.6/site-packages/flask/app.py", line 1820, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/ets/.local/lib/python3.6/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/home/ets/.local/lib/python3.6/site-packages/flask/app.py", line 1949, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/ets/.local/lib/python3.6/site-packages/flask/app.py", line 1935, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/ets/Desktop/pwaProcessRetina/ReactFlaskpwa/mysql.py", line 26, in signUp
    image_url = request.get_json()['image_url']
KeyError: 'image_url'

【问题讨论】:

  • 你检查过 request.get_json() 函数的响应吗?响应可能不包含键“image_url”。
  • @AbdullahAlMasudTushar 我如何检查它?我是 python 新手,打印不起作用
  • 如果您使用 pycharm 之类的 IDE 开发应用程序,您可以尝试使用调试器并在错误出现的行处设置断点。使用调试器,您可以查看响应中的内容。如果您是新手,可以从 google 获取有关调试器的帮助 :)
  • 谢谢。这是结果 {'headers': {'Content-Type': 'application/json'}, 'params': {'image_url': 'blob:localhost:3000/657b3055-291d-4f19-a5e2-e88b1d3eca49'}}

标签: python flask traceback


【解决方案1】:

每当请求 dict() 对象时,Python 都会引发 KeyError(使用 格式 a = adict[key]) 并且键不在字典中。

KeyError 在您的情况下意味着密钥 image_url 不存在于字典中。打印出 JSON 并进行验证。

【讨论】:

  • 很抱歉问了这么琐碎的问题,但是我如何打印我从反应中得到的 json?
  • 在您的mysql.py 中,在image_url = request.get_json()['image_url'] 之前添加这一行print(request.get_json())。或者,如果您启用了 Werkzeug 调试器(使用 export FLASK_DEBUG=1),您可以访问前端的调试器控制台并访问对象。
  • 这是打印结果 ==> {'headers': {'Content-Type': 'application/json'}, 'params': {'image_url': 'blob:localhost:3000/657b3055-291d-4f19-a5e2-e88b1d3eca49' }}
  • request.get_json()['image_url'] 替换为request.get_json()['params']['image_url']
  • 非常感谢。有效。所以我必须给出我的请求参数的完整结构?
猜你喜欢
  • 1970-01-01
  • 2017-12-27
  • 1970-01-01
  • 2022-12-07
  • 2014-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多