django - 表单验证有时会失败并显示值错误
问题描述
有时表单正在验证,但有时表单未验证并显示值错误
视图.py
def hai(request):
if request.method == 'POST':
obj1 = hello(request.FILES, request.POST)
if obj1.is_valid():
return HttpResponse("success")
每次提交都需要清理表格吗?
表格.py
class hello(forms.Form):
uname = forms.CharField(max_length=100)
img = forms.FileField()
模板
<html>
<head></head>
<body>
<form action= {% url 'hai' %} method="POST" enctype="multipart/form-data ">
{% csrf_token %}
<div class="d-flex">
<div class="form-group mr-2">
<label for="" class="label">Pick-up date</label>
<input type="text" name="uname" class="form-control"
placeholder="Date">
</div><br>
<div class="form-group ml-2">
<label for="" class="label">Drop-off date</label>
<input type="file" name="img" class="form-control"
placeholder="Date">
</div><br>
<input type="submit" value="Book Now" class="btn btn-primary py-3 px4">
</div>
</form>
</body>
</html>
这是错误:
解决方案
这里的问题是,无论您的表单是否有效,您都应该始终返回(或子类);HttpResponse
所以基本上你应该有:
def hai(request):
if request.method == 'POST':
obj1 = hello(request.FILES, request.POST)
if obj1.is_valid():
return HttpResponse("success")
else:
return HttpResponse("error")
或者,如果您愿意,您可以将模板中包含错误的表单发回。
推荐阅读
- ios - 在 iOS WKWebview 的 iFrame 中阻止第三方 cookie
- qt - QML - 用于多点触控应用程序的自定义可滚动文本区域
- java - 从事件侦听器调用时,Spring数据JPA删除不起作用
- google-apps-script - 将 Google 表格导出为 PDF:getDataAsString() 返回一个空 PDF
- c++ - 在 std::exception.what() 中使用 std::stringstream
- typescript - ngOnchanges 未触发
- vb.net - VB2012 报表中的分页符
- java - 带有枚举类的开关盒
- c - OLED 显示器 128x64 SSD1309 通过 SPI-4 线与 TMS320F28377x 集成
- sql - CTE 递归连接表