在Flask中访问Multiselect表单字段

kj4*_*ohh 26 python flask

我在html文件中有一个multiselect,如下所示:

<select multiple id="mymultiselect" name="mymultiselect">         
        <option value="1">this</option>       
        <option value="2">that</option>       
        <option value="3">other thing</option>
</select>
Run Code Online (Sandbox Code Playgroud)

当我通过以下方式访问flask/python中的mymultiselect字段时:

request.form['mymultiselect']
Run Code Online (Sandbox Code Playgroud)

或者通过使用request.args.get函数,它只返回一个选定的项目.我已经知道要获取所有选定的项目,我必须将[]添加到字段的名称,如下所示:

<select multiple id="mymultiselect" name="mymultiselect[]">       
        <option value="1">this</option>       
        <option value="2">that</option>       
        <option value="3">other thing</option>
</select>
Run Code Online (Sandbox Code Playgroud)

我可以通过查看firebug中的帖子数据看到这是有效的,但是我随时尝试访问flask/python中的这个字段,它返回null或None.

如何访问这些名称末尾带有"[]"的多选表单字段?我已经尝试将"[]"附加到python代码中的字段名称,但这似乎不起作用.

Mar*_*ers 58

您想使用该getlist()函数来获取值列表:

multiselect = request.form.getlist('mymultiselect')
Run Code Online (Sandbox Code Playgroud)

不会需要添加[]的名称,使这项工作; 事实上,[]不会帮助,根本不使用它.

  • 那么如果只有一个元素呢?`get` 什么时候应该返回一个列表,什么时候应该返回一个值?API 在这里是明确的;`get` 总是返回一个值。`getlist` 总是返回一个列表。 (3认同)