Django提交GET表单后无法获取HTML输入框的参数值如何解决?
问题核心原因
- 提交的表单未携带对应参数,后端自然无法取值,具体有两类常见错误:
- 三个输入框
<input>元素写在了<form>闭合标签外,表单提交时只会收集标签内部的输入内容 - 输入框未设置与后端取值对应的
name属性:必须给纯文本输入框加name="client-name"、两个日期输入框分别加name="start-date"和name="end-date",name属性是前后端参数匹配的唯一标识,id、class属性不影响参数传递
- 三个输入框
补充冗余点说明
你使用GET方法提交表单时,{% csrf_token %}是多余的,Django的CSRF校验仅针对POST等修改类请求,不会校验GET请求,该内容不影响参数取值,可选择性删除。
修正后的表单示例代码
<form action="{% url 'get-billing'%}" method="GET"> <!-- 输入框必须放在form内部,且配置对应name属性 --> <input type="text" name="client-name" placeholder="输入客户名称"> <input type="datetime-local" name="start-date"> <input type="datetime-local" name="end-date"> <button type="submit" value="click" class="btn btn-warning btn-sm fs-6">Submit</button> </form>
验证方法
提交表单后查看浏览器地址栏,正常会显示类似your-domain/get_billing?client-name=测试客户&start-date=2024-05-01T10:00&end-date=2024-05-10T18:00的格式,如果URL中没有三个对应参数,说明前端表单配置仍有问题。
内容的提问来源于stack exchange,提问作者Chris Ward
相关产品推荐
相关产品推荐

