https://docs.djangoproject.com/zh-hans/3.0/topics/forms/
https://docs.djangoproject.com/zh-hans/3.0/ref/forms/api/
https://docs.djangoproject.com/zh-hans/3.0/ref/forms/fields/
https://docs.djangoproject.com/zh-hans/3.0/ref/forms/widgets/
https://docs.djangoproject.com/zh-hans/3.0/topics/forms/modelforms/

无论用表单提交了什么数据,一旦通过调用 is_valid() 验证成功( is_valid() 返回 True ),已验证的表单数据将被放到 form.cleaned_data 字典中。这里的数据已经很好的为你转化为Python类型。

Django中的表单不同于HTML中的表单

Form 类描述一张表单并决定它如何工作及呈现
ModelForm 通过 Form 映射模型类的字段到HTML表单的 元素

  1. >>> from django.forms import ModelForm
  2. >>> from myapp.models import Article
  3. # Create the form class.
  4. >>> class ArticleForm(ModelForm):
  5. ... class Meta:
  6. ... model = Article
  7. ... fields = ['pub_date', 'headline', 'content', 'reporter']
  8. # Creating a form to add an article.
  9. >>> form = ArticleForm()
  10. # Creating a form to change an existing article.
  11. >>> article = Article.objects.get(pk=1)
  12. >>> form = ArticleForm(instance=article)

DataForm中新增字段
https://www.cnblogs.com/apollo1616/articles/9947832.html

模型中的ManyToManyField用MultipleChoiceField来表示。

django.models.ForeignKey 由 django.forms.ModelChoiceField 表示
django.models.ManyToManyField 由 django.forms.ModelMultipleChoiceField 表示

如果模型字段设置了 blank=True ,那么表单字段的 required 属性被设置为 False ,否则 required=True 。

表单字段的 label 设置为模型字段的 verbose_name ,并且首字母大写。

表单字段的 help_text 设置为模型字段的 help_text 。

表单模板

只需要将表单的实例放到模板的上下文中即可自动渲染。

  1. # views.py
  2. def show(requests):
  3. form = ShowForm()
  4. return render(requests, 'show.html', {'form':form})

注意:Django表单在渲染时,不包含form标签,以及submit按钮。

  1. # show.html
  2. <form>
  3. {{ form }}
  4. <input type="submit">
  5. </form>