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表单的 元素
>>> from django.forms import ModelForm
>>> from myapp.models import Article
# Create the form class.
>>> class ArticleForm(ModelForm):
... class Meta:
... model = Article
... fields = ['pub_date', 'headline', 'content', 'reporter']
# Creating a form to add an article.
>>> form = ArticleForm()
# Creating a form to change an existing article.
>>> article = Article.objects.get(pk=1)
>>> 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 。
表单模板
只需要将表单的实例放到模板的上下文中即可自动渲染。
# views.py
def show(requests):
form = ShowForm()
return render(requests, 'show.html', {'form':form})
注意:Django表单在渲染时,不包含form标签,以及submit按钮。
# show.html
<form>
{{ form }}
<input type="submit">
</form>