python - flask.request.form 中的动态表单字段

标签 python flask werkzeug

我已经查看了文档,但对于我来说,我无法弄清楚 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/

相关文章:

我的应用程序的 C# 或 Python

Python 从类中定义的不同文件调用方法

css - 如何修改jinja2模板中的SelectField宽度

python - 如何使用单个 get 请求从 python Flask 中的 REST 服务器返回获得连续响应

python - Flask-Login login_manager.session_protection=strong 不会重定向到登录页面

Python - Flask 和 werkzeug - 继续提供 "BadRequestKeyError: 400 Bad Request: KeyError: ' 文件'"

python - 在启动时将 python 脚本作为守护进程运行 (Ubuntu)

python - 将 Pandas (python)数据帧序列化为二进制格式

python - Sphinx - 生成对 Trac 票证和变更集的自动引用

python - 如何从 flask 的日志记录中删除 "- -"?