在Django中为什么我的表单提交按钮返回的不是POST请求?
问题原因
核心错误是form标签的提交方法属性写错:
- form标签用于指定HTTP请求方法的属性是
method,你代码中使用的type不是form标签的合法属性,浏览器无法识别到你要使用POST提交,就会启用表单默认的GET方法发起请求。
修复方案
把form标签的type="POST"替换为method="POST"即可,修改后的完整代码如下:
<body> <form action="/reset" method="POST"> {% csrf_token %} <h3>Random Word (attempt # {{request.session.counter}})</h3> <div> <h1>{{request.session.rword}}</h1> </div> <label for="title">Title</label> <input type="text" name="title" id=""> <button type="submit">Generate</button> </form>
其他排查方向(修改后仍有问题可排查)
- 检查是否有前端JavaScript代码拦截了表单的submit事件,手动修改了请求方法为GET
- 检查服务端是否存在重定向规则,将POST请求通过301/302状态码重定向为了GET请求
内容的提问来源于stack exchange,提问作者Erick Vivas
相关产品推荐
相关产品推荐

