Django表单提交始终触发GET请求而非POST请求求助
表单提交始终触发GET请求的排查方案
核心问题:表单未指定POST方法
你提供的模板代码中缺失了<form>标签的开头部分。HTML表单默认请求方法为GET,必须显式声明method="POST"才能触发POST请求。
修改模板的表单结构:
<form method="POST" action=""> {% csrf_token%} Item name {{form.item_name}} Quantity {{form.quantity}} <div class="form-group"> <label for="address">Address</label> {{form.address}} </div> <div class="modal-footer d-flex justify-content-center"> <button type="submit" id="submit" class="btn btn-success">Donate</button> </div> </form>
额外修正点
移除
data-dismiss="modal"属性:该Bootstrap属性会在点击按钮时立即关闭模态框,可能导致表单提交流程被中断,引发请求异常。若需提交后关闭模态框,建议通过JavaScript监听表单提交成功事件来实现。匹配表单字段与视图处理逻辑:你的视图代码中使用
form.cleaned_data['item']和form.cleaned_data['itemquantity'],但模型Donate及模板渲染的字段为item_name和quantity,字段名不匹配会导致表单验证失败。修正视图代码:
if form.is_valid(): print('Form is valid!!') Donate.objects.create( user_name=get_user, item_name=form.cleaned_data['item_name'], quantity=form.cleaned_data['quantity'], address=form.cleaned_data['address'] )
注:无需调用form.save(),直接用当前登录的get_user关联即可,避免因表单定义问题导致的对象关联错误。
- 确认表单action属性:若表单需提交到当前视图,保持
action=""或省略该属性即可,避免因URL错误引发请求异常。
内容的提问来源于stack exchange,提问作者Talha Bhurgri
相关产品推荐
相关产品推荐

