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表单的更多相关文章

  1. django form表单验证

    一. django form表单验证引入 有时时候我们需要使用get,post,put等方式在前台HTML页面提交一些数据到后台处理例 ; <!DOCTYPE html> <html ...

  2. Django(5) session登录注销、csrf及中间件自定义、django Form表单验证(非常好用)

    一.Django中默认支持Session,其内部提供了5种类型的Session供开发者使用: 数据库(默认) 缓存 文件 缓存+数据库 加密cookie 1.数据库Session 1 2 3 4 5 ...

  3. Django form表单 组件

    目录 Django form表单 组件 Form 组件介绍 普通方式手写注册功能 使用form组件实现注册功能 Form 常用字段与插件 常用字段(必备) 字段参数(必备) 内置验证(必备) 自定义效 ...

  4. Django学习笔记之Django Form表单详解

    知识预览 构建一个表单 在Django 中构建一个表单 Django Form 类详解 使用表单模板 回到顶部 构建一个表单 假设你想在你的网站上创建一个简单的表单,以获得用户的名字.你需要类似这样的 ...

  5. django Form表单的使用

    Form django表单系统中,所有的表单类都作为django.forms.Form的子类创建,包括ModelForm 关于django的表单系统,主要分两种 基于django.forms.Form ...

  6. Django form表单

    Form介绍 之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来.与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入, ...

  7. Django Form表单组件

    Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ...

  8. django Form 表单 总结与小实例

    开头寄语: 这几天一直在看Django的form表单验证,然后想对于这几天要有个总结. 首先,先来看一下找到的一个form表单验证的流程: 验证过程 流程详解1. 函数full_clean()依次调用 ...

  9. Django Form表单学习总结

    Form中添加自定义的验证:    1.对特定字段属性的验证;    2.包含多字段的验证. 先创建一个简单的Form: from django import forms class ContactF ...

随机推荐

  1. Java 并发锁

    Java 中的锁 阻塞锁.可重入锁.读写锁.互斥锁.悲观锁.乐观锁.公平锁.偏向锁.对象锁.线程锁.锁粗化.锁消除.轻量级锁.重量级锁.信号量.独享锁.共享锁.分段锁 一.常见的锁 synchroni ...

  2. nacos作为配置中心兼容xml配置文件

    最近公司想要用配置中心,因为公司用的有传统的spring项目,有springboot项目,为了兼容都能够采用配置中心,做了一些尝试,经过比较还是倾向于使用nacos,传统dubbo采用spring方式 ...

  3. Linux centosVMware Linux集群架构LVS DR模式搭建、keepalived + LVS

    一.LVS DR模式搭建 三台机器 分发器,也叫调度器(简写为dir) davery :1.101 rs1 davery01:1.106 rs2 davery02:11.107 vip 133.200 ...

  4. 38 java 使用标签跳出多层嵌套循环

    public class Interview { public static void main(String[] args) { //使用带标签的break跳出多层嵌套循环 Boolean flag ...

  5. vector的clear和swap

    vector的clear()操作只是清空vector的元素,而不会将内存释放掉 vector<int> vec1{ 1,2,3,4,5 }; vec1.clear(); cout<& ...

  6. Linux进程管理(一)

    目录 Linux进程管理(一) 参考 pstree命令 pidof命令 pmap命令 pwdx命令 ps命令 nice调优 发送信号 Linux进程管理(一)

  7. 115、Java中String类之使用concat进行字符串连接

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...

  8. 【快学springboot】6.WebMvcConfigurer配置静态资源和解决跨域

    勘误 有个朋友说:为什么我配置了WebMvcConfigurer,静态资源static依然能访问?! 这里是本人的失误,我在启动类中添加了EnableWebMvc注解(文章里却没有提及,最好的做法是放 ...

  9. 吴裕雄--天生自然HADOOP操作实验学习笔记:协同过滤算法

    实验目的 初步认识推荐系统 学会用mapreduce实现复杂的算法 学会系统过滤算法的基本步骤 实验原理 前面我们说过了qq的好友推荐,其实推荐算法是所有机器学习算法中最重要.最基础.最复杂的算法,一 ...

  10. ES 查询时 排序报错(fielddata is disabled on text fileds by default ... )解决方法

    背景:elasticsearch 进行排序的时候,可能会排序数字.日期.但是在排序text类型的时候就会出现上述错误 原因(参考): https://blog.csdn.net/wild46cat/a ...