我已经查看了文档,但对于我来说,我无法弄清楚 Flask 中的 request.form
对象是如何填充的。 The documentation说它充满了来自 POST 或 PUT 请求的解析表单数据,但我的表单是动态的,所以我不一定知道发送 POST 请求时存在哪些字段 - 尽管我想确保我将这些字段中的信息添加到数据库。
表单中的某些字段始终存在,但也会有大约 60 个列表中的任意数量的额外字段。我应该如何确定这些额外字段中的哪些在请求中以及应该如何处理我从他们那里获取数据?
编辑:我的具体问题已经解决,但仍然值得询问如何填充 request.form 字典。我发现如果未选中复选框输入的困难方法,则不会在其名称下的字典中添加任何键,并且尝试从字典中获取不存在的键的值会导致相当困惑和神秘 HTTP 400 BAD REQUEST
错误。
最佳答案
request.form
返回一个 MultiDict
对象。基本上,这意味着对于 1 个键,您可以有多个值。如果您想测试您的表单 POST 是什么样子,只需按如下所示快速打印语句
f = request.form
for key in f.keys():
for value in f.getlist(key):
print key,":",value
如果您阅读 MultiDict 的文档,它说
“MultiDict 是一个定制的字典子类,用于处理同一个键的多个值,例如包装器中的解析函数使用的。这是必要的,因为一些 HTML 表单元素为同一个键传递多个值键。”
http://werkzeug.pocoo.org/docs/datastructures/#werkzeug.datastructures.MultiDict
关于python - flask.request.form 中的动态表单字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17752301/