Django - form is not valid ?

作者: fall4u | 来源:发表于2017-12-30 20:28 被阅读12次
    问题:

    在前端进行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)
    

    相关文章

      网友评论

        本文标题:Django - form is not valid ?

        本文链接:https://www.haomeiwen.com/subject/anengxtx.html