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

Cha*_*ann 15 python werkzeug flask

我查看了文档,但对于我的生活,我无法弄清楚request.formFlask中的对象是如何填充的. 该文件说,这是充满了来自POST解析的表单数据或PUT请求,但我的形式是动态的,所以我并不知道什么时候POST请求被发送存在哪些领域-虽然我想确保我从这些添加的信息字段到数据库.

一些表单字段是永远存在的,但也会有任意数量的额外字段从约60的名单如何,我应该去搞清楚这些附加字段是在请求我应该怎么弄的来自他们的数据?

编辑:我的具体问题已经解决,但仍然值得询问如何填充request.form字典.我发现很难的方法是,如果取消选中复选框输入,则不会在其名称下的字典中添加任何键,并且尝试获取字典中不存在的键的值会导致相当混乱和神秘的HTTP 400 BAD REQUEST错误.

cod*_*eek 28

request.form返回一个MultiDict对象.基本上,这意味着对于1个键,您可以拥有多个值.如果您想测试POST表单的样子,请执行以下快速打印声明

f = request.form
for key in f.keys():
    for value in f.getlist(key):
        print key,":",value
Run Code Online (Sandbox Code Playgroud)

如果您阅读MultiDict的文档,它说

"MultiDict是一个字典子类,用于处理同一个键的多个值,例如包装器中的解析函数.这是必要的,因为一些HTML表单元素为同一个键传递多个值. "

http://werkzeug.pocoo.org/docs/datastructures/#werkzeug.datastructures.MultiDict

  • 我想说(贡献),乍一看,有点难以理解 `request.form` 是如何像普通 Python 字典一样解析的(尽管它返回一种带有 `dict` 的 `dict` tuples`,如果您尝试打印 `f`),但答案很有意义,特别是关于示例以及 Flask MultiDict 的定义。非常感谢,#codegeek :)。 (2认同)