表单提交发送 POST 请求而不是 GET
Posted
技术标签:
【中文标题】表单提交发送 POST 请求而不是 GET【英文标题】:Form submit sending POST request instead GET 【发布时间】:2021-10-12 13:19:06 【问题描述】:我正在尝试使django-filter
工作,它已经工作了,但现在它突然停止了。
问题是过滤器中的submit
按钮似乎发送的是 POST 请求而不是 GET
下面是 html 代码的 sn-p
<div class="form-group">
<form method="POST">
% csrf_token %
form|crispy
<button class="btn btn-outline-success" type="submit">Add product</button>
</div>
<div id="filter-menu">
<form method="get">
filter.form.nick_name|as_crispy_field
<br>
filter.form.domain|as_crispy_field
<br>
<button class="btn btn-outline-success" type="submit">Filtrér</button>
</form>
<form method="get">
filter.form.nick_name|as_crispy_field
<br>
filter.form.domain|as_crispy_field
<br>
<button class="btn btn-outline-success" type="submit">Dummy</button>
</form>
</div>
我确实在上面看到了一个 POST 请求提交按钮,它似乎是被触发的那个,因为当我调试应用程序时,按下 apply filter
按钮时是 request.method == "POST"
。
有趣的是,“虚拟按钮”可以正常工作
【问题讨论】:
乍一看,您的第一个表单没有关闭</form>
标记。
它确实 - 在按钮之后
您在此处显示的代码中没有。
啊啊,在 POST 方法中。你是完全正确的 - 我怎么错过了!谢谢
【参考方案1】:
很简单不是吗?最上面的表单有 post 方法,你忘了添加它。使用下面的代码。
<div class="form-group">
<form method="POST">
% csrf_token %
form|crispy
<button class="btn btn-outline-success" type="submit">Add product</button>
</form>
</div>
<div id="filter-menu">
<form method="get">
filter.form.nick_name|as_crispy_field
<br>
filter.form.domain|as_crispy_field
<br>
<button class="btn btn-outline-success" type="submit">Filtrér</button>
</form>
<form method="get">
filter.form.nick_name|as_crispy_field
<br>
filter.form.domain|as_crispy_field
<br>
<button class="btn btn-outline-success" type="submit">Dummy</button>
</form>
</div>
问题一定是它假设所有其他形式作为第一种形式的一部分,它只是带有 post 方法的形式。这就是为什么你会得到发布结果。希望能帮助到你。如果是,请投票给答案。
【讨论】:
有帮助吗?是吗?以上是关于表单提交发送 POST 请求而不是 GET的主要内容,如果未能解决你的问题,请参考以下文章
表单的提交有两种方式:GET和POST,这两种方式的区别是啥?
html中post必须要用form表单,而get就可以不用form表单就可以提交了吗?
关于AsyncHttpClient框架的post 提交表单上传文件怎么弄