Django表单设置POST但请求方法为GET,数据无法保存
解决Django表单提交始终为GET请求的问题
我一眼就发现问题出在你的提交按钮上了!
问题根源
你的按钮设置了 type="button",这种类型的按钮不会自动触发表单提交——它只是个普通的点击按钮,哪怕你加了 formmethod="POST" 也没用。所以点击它的时候,根本不会按照表单指定的 method="POST" 发送请求,视图自然只能拿到 GET 请求,导致无法进入POST分支保存数据。
修复方案
把按钮的 type 改成 submit,并且可以去掉多余的 formmethod="POST"(因为表单本身已经指定了 method="POST"):
<button type="submit" class="btn btn-primary waves-effect waves-light">تایید</button>
为什么这样有效?
当按钮 type="submit" 时,点击它会自动触发所在表单的提交行为,严格遵循表单设置的 method 和 action 发送请求。这时候你的视图里 request.method 就会变成 POST,POST分支的代码就能正常执行,数据也能顺利保存了。
额外提示
如果因为某些特殊需求必须使用 type="button",那你需要添加JavaScript代码手动触发表单提交,比如:
// 给按钮绑定点击事件触发表单提交 document.querySelector('button').addEventListener('click', function() { document.querySelector('form').submit(); });
但显然直接修改按钮类型是最简单直接的解决方案。
内容的提问来源于stack exchange,提问作者Hadi Waheed
相关产品推荐
相关产品推荐

