python django Form表单
Django 拥有自己独立的表单功能块,可以完成:
1、表单的定义
2、表单的校验
3、表单的前端样式
等功能,方便我们开发,那么接下来,我们看一下表单的定义
首先我们确定我们要编写的功能,一个提供给博客的访客发送自己的联系方式的功能。并且搭建相对应的数据库
from django.db import models class Connection(models.Model):
con_name = models.CharField(max_length = 32,verbose_name = "联系人姓名")
con_phone = models.CharField(max_length=32, verbose_name="联系人姓名")
con_email = models.EmailField(verbose_name="联系人姓名") def __str__(self):
return "%s : %s"%(self.con_name,self.con_email)
表单的定义
form表单的定义通过Django下面的form类进行定义,过程和Django的模型定义类似,首先在app目录当中创建form定义的专属文件form.py,然后开始我们的编写。
常用的表单定义方法有两种:
1、 常规定义,我们按照与model模型定义类似的定义方法定义表单
#coding:utf-8
from django import forms class ConnectionForm(forms.Form):
con_name = forms.CharField(max_length = 32,label = "联系人姓名")
con_phone = forms.CharField(max_length=32, label="联系人姓名")
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 最小长度
2、对应Django模型定义
为了保证我们定义的表单模型和数据库提交模型的一致性,我们可以通过Form表单类当中嵌套元类Meta来实现通过模型快速的定义表单
#coding:utf-8
from django import forms
from Article.models import Connection #首先导入要对接的数据库
class ConnectionForm(forms.ModelForm): #注意,我们现在继承的是ModelForm而不是Forms
class Meta: #这是一个元类
model = Connection #指定models对应的模型
fields = ["con_name","con_phone","con_email"] #指定显示的字段
当然,这么简单的代码只能完成最简单的效果,我们还需要一些常用的参数
1、fields 要展示的字段,接收的是一个列表,如果不写默认是models的所有字段
2、exclude 不要展示的字段,接收的是一个列表,排除的字段,默认没有
3、widgets 是一个模型字段的名称对应的样式的字典
4、labels 是一个模型字段的名称对应的标签的字典
5、help_texts 是一个模型字段的名称对应的帮助文档的字典
6、error_messages是一个模型字段的名称对应的错误提示的字典
这种写法使用的比较少,举一个例子来看看对应Django模型定义表单的参数使用
#coding:utf-8
from django import forms
from Article.models import Connection #首先导入要对接的数据库
class ConnectionForm(forms.ModelForm): #注意,我们现在继承的是ModelForm而不是Forms
class Meta: #这是一个元类
model = Connection #指定models对应的模型
fields = ["con_name","con_phone","con_email"] #指定显示的字段
widgets = {
"con_name": forms.TextInput(attrs = {"style":"font-size:20px;"}),
"con_phone": forms.TextInput(attrs={"style": "font-size:20px;"}),
"con_email": forms.TextInput(attrs={"style": "font-size:20px;"})
} #指定对应标签的样式
python django Form表单的更多相关文章
- django form表单验证
一. django form表单验证引入 有时时候我们需要使用get,post,put等方式在前台HTML页面提交一些数据到后台处理例 ; <!DOCTYPE html> <html ...
- Django(5) session登录注销、csrf及中间件自定义、django Form表单验证(非常好用)
一.Django中默认支持Session,其内部提供了5种类型的Session供开发者使用: 数据库(默认) 缓存 文件 缓存+数据库 加密cookie 1.数据库Session 1 2 3 4 5 ...
- Django form表单 组件
目录 Django form表单 组件 Form 组件介绍 普通方式手写注册功能 使用form组件实现注册功能 Form 常用字段与插件 常用字段(必备) 字段参数(必备) 内置验证(必备) 自定义效 ...
- Django学习笔记之Django Form表单详解
知识预览 构建一个表单 在Django 中构建一个表单 Django Form 类详解 使用表单模板 回到顶部 构建一个表单 假设你想在你的网站上创建一个简单的表单,以获得用户的名字.你需要类似这样的 ...
- django Form表单的使用
Form django表单系统中,所有的表单类都作为django.forms.Form的子类创建,包括ModelForm 关于django的表单系统,主要分两种 基于django.forms.Form ...
- Django form表单
Form介绍 之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来.与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入, ...
- Django Form表单组件
Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ...
- django Form 表单 总结与小实例
开头寄语: 这几天一直在看Django的form表单验证,然后想对于这几天要有个总结. 首先,先来看一下找到的一个form表单验证的流程: 验证过程 流程详解1. 函数full_clean()依次调用 ...
- Django Form表单学习总结
Form中添加自定义的验证: 1.对特定字段属性的验证; 2.包含多字段的验证. 先创建一个简单的Form: from django import forms class ContactF ...
随机推荐
- Java 并发锁
Java 中的锁 阻塞锁.可重入锁.读写锁.互斥锁.悲观锁.乐观锁.公平锁.偏向锁.对象锁.线程锁.锁粗化.锁消除.轻量级锁.重量级锁.信号量.独享锁.共享锁.分段锁 一.常见的锁 synchroni ...
- nacos作为配置中心兼容xml配置文件
最近公司想要用配置中心,因为公司用的有传统的spring项目,有springboot项目,为了兼容都能够采用配置中心,做了一些尝试,经过比较还是倾向于使用nacos,传统dubbo采用spring方式 ...
- Linux centosVMware Linux集群架构LVS DR模式搭建、keepalived + LVS
一.LVS DR模式搭建 三台机器 分发器,也叫调度器(简写为dir) davery :1.101 rs1 davery01:1.106 rs2 davery02:11.107 vip 133.200 ...
- 38 java 使用标签跳出多层嵌套循环
public class Interview { public static void main(String[] args) { //使用带标签的break跳出多层嵌套循环 Boolean flag ...
- vector的clear和swap
vector的clear()操作只是清空vector的元素,而不会将内存释放掉 vector<int> vec1{ 1,2,3,4,5 }; vec1.clear(); cout<& ...
- Linux进程管理(一)
目录 Linux进程管理(一) 参考 pstree命令 pidof命令 pmap命令 pwdx命令 ps命令 nice调优 发送信号 Linux进程管理(一)
- 115、Java中String类之使用concat进行字符串连接
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- 【快学springboot】6.WebMvcConfigurer配置静态资源和解决跨域
勘误 有个朋友说:为什么我配置了WebMvcConfigurer,静态资源static依然能访问?! 这里是本人的失误,我在启动类中添加了EnableWebMvc注解(文章里却没有提及,最好的做法是放 ...
- 吴裕雄--天生自然HADOOP操作实验学习笔记:协同过滤算法
实验目的 初步认识推荐系统 学会用mapreduce实现复杂的算法 学会系统过滤算法的基本步骤 实验原理 前面我们说过了qq的好友推荐,其实推荐算法是所有机器学习算法中最重要.最基础.最复杂的算法,一 ...
- ES 查询时 排序报错(fielddata is disabled on text fileds by default ... )解决方法
背景:elasticsearch 进行排序的时候,可能会排序数字.日期.但是在排序text类型的时候就会出现上述错误 原因(参考): https://blog.csdn.net/wild46cat/a ...