Django 拥有本身独立的表单功能块,能够完成:前端
一、表单的定义数据库
二、表单的校验django
三、表单的前端样式app
等功能,方便咱们开发,那么接下来,咱们看一下表单的定义ui
首先咱们肯定咱们要编写的功能,一个提供给博客的访客发送本身的联系方式的功能。而且搭建相对应的数据库url
1 from django.db import models 2 3 class Connection(models.Model): 4 con_name = models.CharField(max_length = 32,verbose_name = "联系人姓名") 5 con_phone = models.CharField(max_length=32, verbose_name="联系人姓名") 6 con_email = models.EmailField(verbose_name="联系人姓名") 7 8 def __str__(self): 9 return "%s : %s"%(self.con_name,self.con_email)
表单的定义spa
form表单的定义经过Django下面的form类进行定义,过程和Django的模型定义相似,首先在app目录当中建立form定义的专属文件form.py,而后开始咱们的编写。code
经常使用的表单定义方法有两种:orm
一、 常规定义,咱们按照与model模型定义相似的定义方法定义表单blog
1 #coding:utf-8 2 from django import forms 3 4 class ConnectionForm(forms.Form): 5 con_name = forms.CharField(max_length = 32,label = "联系人姓名") 6 con_phone = forms.CharField(max_length=32, label="联系人姓名") 7 con_email = forms.EmailField(label="联系人姓名")
这样咱们就定义了一个表单,这个表单和上面讲课用的联系人表单的效果是如出一辙的。固然惯用form字段里面经常使用的字段和对应的参数,也给你们列出 来:
经常使用的字段
1、charfield 对应单行输入框
2、booleanfield 对应checkbox选择框
3、choicefield 对应下拉菜单选择框 重要参数choice
4、datafield 对应一个单行输入框,可是会自动转化为日期类型
5、emailfield 对应输入框,自动验证是不是邮件地址
6、filefield 对应文件上传选项
7、filepathfiled 对应一个(文件组成的下拉菜单)选择,必须参数path=''.选项为这个地址里边全部的文件。可选参数recursive=True是否包含子文件夹里的文件
8、imagefield 图片上传按钮。须要pillow模块
9、urlfield 对应输入框 自动验证是否为网址格式
字段经常使用的参数
1、rqeuired 字段是否为必填 默认为True
2、label 相似于输入框前边的提示信息
3、initial 初始值(占位符)就是给出一个默认值
4、help_text 字段的辅助描述
5、error_message={} 覆盖{{form.name.error}}信息
6、disable 字段是否能够修改
7、widget 负责渲染网页上HTML表单的输入元素和提取提交的原始数据。
8、max_length 最大长度
9、min_length 最小长度
二、对应Django模型定义
为了保证咱们定义的表单模型和数据库提交模型的一致性,咱们能够经过Form表单类当中嵌套元类Meta来实现经过模型快速的定义表单
1 #coding:utf-8 2 from django import forms 3 from Article.models import Connection #首先导入要对接的数据库 4 class ConnectionForm(forms.ModelForm): #注意,咱们如今继承的是ModelForm而不是Forms 5 class Meta: #这是一个元类 6 model = Connection #指定models对应的模型 7 fields = ["con_name","con_phone","con_email"] #指定显示的字段
固然,这么简单的代码只能完成最简单的效果,咱们还须要一些经常使用的参数
一、fields 要展现的字段,接收的是一个列表,若是不写默认是models的全部字段
二、exclude 不要展现的字段,接收的是一个列表,排除的字段,默认没有
三、widgets 是一个模型字段的名称对应的样式的字典
四、labels 是一个模型字段的名称对应的标签的字典
五、help_texts 是一个模型字段的名称对应的帮助文档的字典
六、error_messages是一个模型字段的名称对应的错误提示的字典
这种写法使用的比较少,举一个例子来看看对应Django模型定义表单的参数使用
1 #coding:utf-8 2 from django import forms 3 from Article.models import Connection #首先导入要对接的数据库 4 class ConnectionForm(forms.ModelForm): #注意,咱们如今继承的是ModelForm而不是Forms 5 class Meta: #这是一个元类 6 model = Connection #指定models对应的模型 7 fields = ["con_name","con_phone","con_email"] #指定显示的字段 8 widgets = { 9 "con_name": forms.TextInput(attrs = {"style":"font-size:20px;"}), 10 "con_phone": forms.TextInput(attrs={"style": "font-size:20px;"}), 11 "con_email": forms.TextInput(attrs={"style": "font-size:20px;"}) 12 } #指定对应标签的样式