Django提交表单时如何获取表格每行select字段的全部选中值?
你有两处核心配置错误,修正后即可实现获取所有下拉选中值的需求:
错误原因
- 表单提交的字段取值对应
<select>标签的name属性,<option>标签的name不会被表单识别提交,你后端取值的键名完全错误 - 多个同名称的表单字段提交时,需要在
name属性值末尾加[]标识,否则浏览器默认只会提交最后一个同名字段的值 - Django的
request.POST.get()方法只能获取单个值,要获取同键名的多个值需要使用getlist()方法
修正后的代码
模板代码
<form method="POST"> {% csrf_token %} <table name="table-example"> <thead> ... </thead> <tbody> {% for item in list_example %} <tr> <td>...</td> <td>...</td> <td> <!-- 给select的name加[]标识 --> <select name="select-example[]"> {% for item in list_selections %} <option value="{{ item }}">{{ item }}</option> {% endfor %} </select> </td> </tr> {% endfor %} </tbody> </table> <button type="submit">Update</button> </form>
后端取值代码
if request.method == "POST": # 用getlist取同键名的所有值,键名用select的name data = request.POST.getlist('select-example[]', None)
改完之后data就是所有下拉选中值组成的列表,顺序和表格行的顺序完全一致。
内容的提问来源于stack exchange,提问作者finethen
相关产品推荐
相关产品推荐

