获取 Flask 请求中收到的数据

新手上路,请多包涵

我希望能够将数据发送到我的 Flask 应用程序。我试过访问 request.data 但它是一个空字符串。您如何访问请求数据?

 from flask import request

@app.route('/', methods=['GET', 'POST'])
def parse_request():
    data = request.data  # data is empty
    # need posted data here


这个问题的答案让我问 在 Python Flask 中获取原始 POST 正文,而不考虑接下来的 Content-Type 标头,这是关于获取原始数据而不是解析数据。

原文由 ddinchev 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

文档 描述了请求期间 request 对象( from flask import request )上可用的属性。在最常见的情况下 request.data 将是空的,因为它被用作后备:

request.data 包含传入的请求数据作为字符串,以防它带有 Flask 无法处理的 mimetype。

  • request.args : URL 查询字符串中的键/值对
  • request.form : 正文中的键/值对,来自 HTML 帖子表单或非 JSON 编码的 JavaScript 请求
  • request.files :正文中的文件,Flask 与 form 分开。 HTML 表单必须使用 enctype=multipart/form-data 否则将无法上传文件。
  • request.values : 组合 argsform , 更喜欢重叠 args
  • request.json :解析的 JSON 数据。请求必须具有 application/json 内容类型,或者使用 request.get_json(force=True) 忽略该内容类型。

所有这些都是 MultiDict 实例(除了 json )。您可以使用以下方式访问值:

  • request.form['name'] :如果您知道密钥存在,请使用索引
  • request.form.get('name') :使用 get 如果密钥可能不存在
  • request.form.getlist('name') :如果密钥被多次发送并且您想要一个值列表,请使用 getlistget 只返回第一个值。

原文由 Robert 发布,翻译遵循 CC BY-SA 4.0 许可协议

对于 URL 查询参数,请使用 request.args

 search = request.args.get("search")
page = request.args.get("page")

对于发布的表单输入,请使用 request.form

 email = request.form.get('email')
password = request.form.get('password')

对于内容类型为 application/json 的 JSON,使用 request.get_json()

 data = request.get_json()

原文由 Fizer Khan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题