You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 21:52:49