问题:
在前端进行Form表单进行POST请求的时候, 需要在Django后端建立对应的Form类。 然后按照如下顺序操作,便可以获取到Form表单中对应控件的值。
form = bookQueryForm(request.POST)
if form.is_valid():
author = form.cleaned_data["author"]
但是事情往往没有我们想象的那么顺利, 比如今天笔者今天在进行一次POST请求的时候, form.is_valid()方法一直返回错误。
form is not vaild
笔者在前一段时间已经遇到了这个问题, 本文对当时场景已经有详细的记录。 本以为经过上次的折腾,再也不会踩进相同的坑里。结果还是打脸,真可谓是 not too young, also too simple
案发现场
form定义如下:
class bookQueryForm(forms.Form):
author = forms.CharField()
Form表单定义如下:
<label class="col-md-1 control-label">作者</label>
<div class="col-md-1">
<input type="text" class="form-control" id = "id_author" placeholder="请输入作者">
</div>
XHR request请求相关代码如下:
var form = document.getElementById('id_querybookForm');
var formData = new FormData();
formData.append('author',document.getElementById("id_author").value);
在这个场景下面发现,如果在提交之前在 id_author输入控件中输入了信息, 则不会出现 form is not valid的信息; 如果不输入信息, 则就会出现错误信息。
解决办法
在定义的时候Form类的时候, 对不是强制需要用户输入的控件,需要显式说明
required=False
author = forms.CharField(required=False)
网友评论