Django表单

前面介绍了Django中form表单的重要作用有:
    1、生成页面可执行的HTML标签
    2、对应户的数据进行校验
    3、保留上次输入的内容

注:
1、在实际开发中一般是不需要使用form表单来生成(渲染)前端页面的(前端页面都是单独开发的),最多的只是使用form表单的验证功能来验证前端提交的数据是否合法

2、Django中form表单的验证功能一般是通过Filed来实现的,通过Filed和字段属性来设置数据的类型和属性

常用的Filed

使用Filed是对数据验证的第一步。你期望这个提交上来的数据是什么类型,那么就使用什么类型的Filed

CharField

1、作用:用来接收文本(字符串)

2、默认的Widget:TextInput

3、四个可选参数:
    ⑴max_length:用来设置字符串的最大长度
    ⑵min_length:用来设置字符串的最小长度
    ⑶strip:默认为True,去除输入的前导和尾随空格
    ⑷empty_value:用来表示'空'的值,默认为空字符串

4、错误信息的键:
    ⑴max_length:用来设置字符串的最大长度
    ⑵min_length:用来设置字符串的最小长度
    ⑶required:这个字段是否是必须的。默认是必须的
    ⑷error_messages:在某个条件验证失败的时候,给出错误信息

注:
1、Widget:最重要的参数之一,指定渲染Widget时使用的widget类,也就是在form字段在HTML页面中是显示为文本输入框、密码框、单选按钮或多选框等,此参数内容比较多

2、这个参数主要是在form表单在前端页面渲染时起作用的。这里介绍的是只使用验证功能,因此这个参数了解下就好了

EmailField

1、作用:用来接收邮箱,会自动验证邮箱(地址)是否合法

2、默认的Widget:EmailInput

3、错误信息的键:required、invalid
    ⑴invalid:提交的邮箱地址无效时返回的错误信息
4、两个可选的参数用于验证:max_length、min_length

FloatField

1、作用:验证给定的值是一个浮点数

2、默认的Widget:当Field.localize是False时为NumberInput,否则为TextInput

3、错误信息的键:max_value, min_value, invalid, required

4、接收两个可选的参数用于验证:max_value和min_value,控制允许的值的范围

注:
1、使用这个Filed时,如果在视图函数中验证通过并使用form.cleaned_data.get()方法来获取对应的值后,获取到的直接就是一个浮点型的数据

2、一旦你的表单接收数据并验证通过了,那么就可以从form.cleaned_data字典中读取所有的表单数据

3、在Django中如果没有使用表单组件来获取数据,而是使用"request.POST.get()"方法来获取数据,那么获取到的就是一个字符串型的数字
    ⑴浏览器和Django服务器之间进行传输的所有数据都是字符串型

IntegerField

1、作用:验证给定值是一个整数。允许前导和尾随空格,类似Python的int()函数

2、默认的Widget:当Field.localize是False时为NumberInput,否则为TextInput

3、错误信息的键:max_value, invalid, required, min_value

4、两个可选参数:max_value和min_value,控制允许的值的范围

URLField

1、作用:证给定值是个有效的URL

2、默认的Widget:URLInput

3、错误信息的键:required, invalid

4、可选参数:max_length和min_length

BooleanField

1、作用:规范化为Python的True或者False

2、默认的Widget:CheckboxInput

3、可用的错误信息键:required

DateField

1、作用:验证给出的值是一个datetime.date,datetime.datetiem或指定日期格式的字符串

2、默认的Widget:DateInput

3、错误信息的键:required,invalid

4、规范化为:datetime.date对象

5、接收一个可选的参数:input_formats,一个格式的列表,用于转换字符串为datetime.date对象,如果没有提供input_formats默认端输入格式为:
    ⑴['%Y-%m-%d','%m/%d/%Y','%m/%d/%y'] 
    ⑵如:['2019-4-10','4/10/2019','4/10/19']
    ⑶只要输入的日期格式不是列表中定义的格式,那么都会验证不通过

例1:
⑴编辑表单

⑵编辑模板

⑶编辑视图

⑷提交内容:错误

⑸提交内容:正确

DateTimeField

1、作用:验证给出的值时一个datetime.datetime、datetime.date或指定日期格式的字符串

2、默认的Widget:DateTimeInput

3、规范化为:python的datetime.datetime对象

4、错误信息的键:required,invalid

5、接收一个可选参数:input_formats,如果没有提供input_formats默认的输入格式为:

['%Y-%m-%d %H:%M:%S',    # '2006-10-25 14:30:59''%Y-%m-%d %H:%M',       # '2006-10-25 14:30''%Y-%m-%d',             # '2006-10-25''%m/%d/%Y %H:%M:%S',    # '10/25/2006 14:30:59''%m/%d/%Y %H:%M',       # '10/25/2006 14:30''%m/%d/%Y',             # '10/25/2006''%m/%d/%y %H:%M:%S',    # '10/25/06 14:30:59''%m/%d/%y %H:%M',       # '10/25/06 14:30''%m/%d/%y']             # '10/25/06'

例2:
⑴编辑表单

⑵提交内容:正确

TimeField

1、作用:验证给定值是datetime.time或以特定时间格式格式化的字符串

2、默认的Widget:TextInput

3、规范化为:一个Python的datetime.time对象

4、错误信息的键:required, invalid

5、接收一个可选的参数:input_formats,用于尝试将字符串转换为有效的datetime.time对象的格式列表

6、如果没有提供input_formats,默认的输入格式为:

'%H:%M:%S',     # '14:30:59'
'%H:%M',        # '14:30'

注:
1、Django表单中还有很多的Filed,这里只是介绍了很小的一部分,其他的后面遇到了在学习吧

2、当然,有时候Django中自带的Filed可能不满足我们的需要,因此我们还可以自定义Filed

3、创建自定义Filed字段
    ⑴如果内置Field类不能满足您的需求,我们可以轻松创建自定义Field类,为此只需创建一个dango.forms.Field子类
    ⑵它的唯一要求是,必须实现一个clean()方法,而且其__init__()实现required,label,initial,widget,help_text方法

拓展

表单、视图分层

这个主要是我自己感觉视图函数和表单即使分了应用程序APP,但是还是觉得如果都放在一个PY文件中的话,会显得很冗余。所以自己试了下将不同的视图函数和表单放到不同PY文件中

例3:

⑴编辑模型

⑵编辑表单

⑶编辑视图

⑷编辑模板

⑸编辑URL映射

表单_内置Filed相关推荐

  1. layui表单验证 内置自定义规则 - 使用说明

    关于 layui表单的验证规则.调用.自定义规则的使用经验总结: 除了 layui 本身配套的一个验证体系,还支持开发者自定义验证规则(如上表中的[自定义密码验证(代码参考下文)]),并直接嵌入到页面 ...

  2. 没有form的表单验证_PHP动态生成表单,内置17种常用组件并且支持表单验证!

    FormBuilder 是一个开源的PHP表单生成器,可以快速生成现代化的form表单.还可以配合开源项目 xaboy/form-create 生成任何 Vue 组件 github | 文档 环境需求 ...

  3. MySQL学习思维导图(MySQL简介、SQL基础命令、约束、单表查询、多表查询、内置函数、存储过程、视图、事务、索引)

    MySQL学习思维导图 内容包括:MySQL简介.SQL基础命令.约束.单表查询.多表查询.内置函数.存储过程.视图.事务.索引 文章目录 MySQL学习思维导图 一.MySQL简介 二.SQL基础命 ...

  4. 《JavaScript高级程序设计(第四版)》红宝书学习笔记(第五章:基本引用类型,原始值包装类型,单例内置对象)

    第五章:基本引用类型 引用值(或者对象)是某个特定引用类型的实例.新对象通过使用new操作符后跟一个构造函数(constructor)来创建. 5.1 Date 这里不对Date进行详细深入,仅基于书 ...

  5. TC118S单通道内置MOS单通道直流无刷马达驱动IC

    一. 特点 TC118S 单通道内置功率 MOS 全桥驱动 웖 驱动前进.后退.停止及刹车功能 웖 内置迟滞热效应过热保护功能 웖 低导通电阻(1.6Ω) 웖 最大连续输出电流可达 1.8A,峰值 2 ...

  6. element-ui表单_每日UI挑战强加-登录表单(分步教程)

    element-ui表单 A step by step journey to create a good design from the daily UI challenge 一步步走,从日常的UI挑 ...

  7. 获取form表单_【第1535期】前端 Form 的表单的一个通用解决方案

    前言 今日早读文章由阿里@布达投稿分享. @布达,Alibaba Fusion项目组的.花名潕量.主要专注在设计系统.组件.可视化搭建这个领域 正文从这开始-- Fusion Next - Form ...

  8. 查看ie保存的表单_解决浏览器保存密码自动填充问题

    解决浏览器保存密码自动填充问题 问题描述 话说有一天,我如往常一样打开我的开发网站进行登录操作.浏览器很平常的在我们进行登录操作之后询问我是否需要记住密码,懒惰如我点击了记住密码.一切都很正常的进行着 ...

  9. angular js创建表单_如何优雅的使用 Angular 表单验证

    随便说说,这一节可以跳过 去年参加 ngChine 2018 杭州开发者大会的时候记得有人问我: Worktile 是什么时候开始使用 Angular 的,我说是今年(2018年) 3 月份开始在新模 ...

最新文章

  1. 我在兰亭这三年完结篇之离开
  2. KS004 基于SSH通讯录系统设计与实现
  3. 处理xmpp 离线信息,
  4. 如何将单选题多选题分开_别再说不会分析多选题了!这6种方法解决你的烦恼!...
  5. redis启动后 允许访问_解决Redis开启远程访问及密码问题
  6. VTK:PolyData之ConnectivityFilter_SpecifiedRegion
  7. 【Python】选择Python2还是Python3?
  8. 解决:-source 1.6 中不支持 diamond 运算符 [ERROR] (请使用 -source 7 或更高版本以启用 diamond 运算符)
  9. Flask 框架下 Jinja2 模板引擎高层 API 类——Environment
  10. [FFmpeg] RGBA 和 YUV 存储方式
  11. 当当网回应李国庆“夺权”;小米:为常程不当言论道歉;Rust 1.43.0 发布 | 极客头条...
  12. Linux安装及升级jdk1.8
  13. CSDN账号绑定github(极简办法)
  14. 计算机第二章测试题及答案,计算机组成原理第二章练习题及答案
  15. 26 图的邻接矩阵:深度优先遍历
  16. C语言 矩阵相似度
  17. 制作u盘winpe启动盘_绿色、无捆绑的优启通U盘启动盘制作工具
  18. 一朵花的组成结构图_请问一朵完整的花由哪几部分组成
  19. yana--Flutter一些学习
  20. 广州app开发:移动app排行榜出炉

热门文章

  1. 腾讯云域名的报价表收费标准和活动报价
  2. 怎么用python学习网站开发_2018年最好用的5个python网站开发框架
  3. cesium中的飞行动画fly
  4. PDF文件旋转最好用的方法
  5. 聊聊从平面设计师转为UI设计师的经历
  6. ffmpeg 音频合并
  7. 13个搭讪绝招助你告别单身
  8. 21. 查询表sc——查询平均成绩大于等于90分的学生学号和平均成绩
  9. [ Arduino+Python ] 做一个串口屏,显示CPU使用率
  10. 723. PUM(DAY 13)