Django中ModelForm加载正常但按回车键提交无响应该如何解决
问题原因
你遇到的问题由两处错误共同导致:
- 模板文件的表单中没有添加提交按钮,大部分浏览器在表单无显式submit元素时,按下回车键不会触发提交动作
- 视图逻辑存在错误,即使表单提交成功,也会被后续的空表单实例覆盖,且没有做提交成功后的重定向,会导致重复提交、错误提示无法展示等问题
修复方案
1. 修正template.html代码
在form标签内添加提交按钮:
<form method="POST"> {% csrf_token %} {{ form.as_p }} <button type="submit">提交数据</button> </form>
2. 修正views.py逻辑
调整视图的处理流程,验证成功后重定向,验证失败保留带错误的表单实例:
from django.shortcuts import redirect, reverse def DrinksView(request): # 仅POST请求时绑定POST数据 if request.method == 'POST': form = DrinksForm(request.POST) if form.is_valid(): print("VALIDATION COMPLETE") form.save() # 提交成功后重定向到当前页面,避免刷新重复提交,替换成你自己绑定的URL名称即可 return redirect(reverse('当前视图对应的url名称')) # GET请求或者验证不通过时初始化表单,验证不通过的form会自带错误信息传给前端 else: form = DrinksForm() return render(request, 'form2.html', {'form': form})
可选优化(非必填)
你当前models.py中DecimalField的max_digits参数设置为2000,这个值远超常规业务需求,Django对该字段的最大值也有适配限制,建议根据实际业务调整到合理值(比如最多保留10位整数加2位小数的话设置为12即可):
number = models.DecimalField(decimal_places=2, max_digits=12)
内容的提问来源于stack exchange,提问作者greg7929
相关产品推荐
相关产品推荐

