Django框架----Form组件补充
一、Form类
创建Form类时,主要涉及到 【字段】 和 【插件】,字段用于对用户请求数据的验证,插件用于自动生成HTML;
1、Django内置字段如下:
1 Field
2 required=True, 是否允许为空
3 widget=None, HTML插件
4 label=None, 用于生成Label标签或显示内容
5 initial=None, 初始值
6 help_text='', 帮助信息(在标签旁边显示)
7 error_messages=None, 错误信息 {'required': '不能为空', 'invalid': '格式错误'}
8 show_hidden_initial=False, 是否在当前插件后面再加一个隐藏的且具有默认值的插件(可用于检验两次输入是否一直)
9 validators=[], 自定义验证规则
10 localize=False, 是否支持本地化
11 disabled=False, 是否可以编辑
12 label_suffix=None Label内容后缀
13
14
15 CharField(Field)
16 max_length=None, 最大长度
17 min_length=None, 最小长度
18 strip=True 是否移除用户输入空白
19
20 IntegerField(Field)
21 max_value=None, 最大值
22 min_value=None, 最小值
23
24 FloatField(IntegerField)
25 ...
26
27 DecimalField(IntegerField)
28 max_value=None, 最大值
29 min_value=None, 最小值
30 max_digits=None, 总长度
31 decimal_places=None, 小数位长度
32
33 BaseTemporalField(Field)
34 input_formats=None 时间格式化
35
36 DateField(BaseTemporalField) 格式:2015-09-01
37 TimeField(BaseTemporalField) 格式:11:12
38 DateTimeField(BaseTemporalField)格式:2015-09-01 11:12
39
40 DurationField(Field) 时间间隔:%d %H:%M:%S.%f
41 ...
42
43 RegexField(CharField)
44 regex, 自定制正则表达式
45 max_length=None, 最大长度
46 min_length=None, 最小长度
47 error_message=None, 忽略,错误信息使用 error_messages={'invalid': '...'}
48
49 EmailField(CharField)
50 ...
51
52 FileField(Field)
53 allow_empty_file=False 是否允许空文件
54
55 ImageField(FileField)
56 ...
57 注:需要PIL模块,pip3 install Pillow
58 以上两个字典使用时,需要注意两点:
59 - form表单中 enctype="multipart/form-data"
60 - view函数中 obj = MyForm(request.POST, request.FILES)
61
62 URLField(Field)
63 ...
64
65
66 BooleanField(Field)
67 ...
68
69 NullBooleanField(BooleanField)
70 ...
71
72 ChoiceField(Field)
73 ...
74 choices=(), 选项,如:choices = ((0,'上海'),(1,'北京'),)
75 required=True, 是否必填
76 widget=None, 插件,默认select插件
77 label=None, Label内容
78 initial=None, 初始值
79 help_text='', 帮助提示
80
81
82 ModelChoiceField(ChoiceField)
83 ... django.forms.models.ModelChoiceField
84 queryset, # 查询数据库中的数据
85 empty_label="---------", # 默认空显示内容
86 to_field_name=None, # HTML中value的值对应的字段
87 limit_choices_to=None # ModelForm中对queryset二次筛选
88
89 ModelMultipleChoiceField(ModelChoiceField)
90 ... django.forms.models.ModelMultipleChoiceField
91
92
93
94 TypedChoiceField(ChoiceField)
95 coerce = lambda val: val 对选中的值进行一次转换
96 empty_value= '' 空值的默认值
97
98 MultipleChoiceField(ChoiceField)
99 ...
100
101 TypedMultipleChoiceField(MultipleChoiceField)
102 coerce = lambda val: val 对选中的每一个值进行一次转换
103 empty_value= '' 空值的默认值
104
105 ComboField(Field)
106 fields=() 使用多个验证,如下:即验证最大长度20,又验证邮箱格式
107 fields.ComboField(fields=[fields.CharField(max_length=20), fields.EmailField(),])
108
109 MultiValueField(Field)
110 PS: 抽象类,子类中可以实现聚合多个字典去匹配一个值,要配合MultiWidget使用
111
112 SplitDateTimeField(MultiValueField)
113 input_date_formats=None, 格式列表:['%Y--%m--%d', '%m%d/%Y', '%m/%d/%y']
114 input_time_formats=None 格式列表:['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']
115
116 FilePathField(ChoiceField) 文件选项,目录下文件显示在页面中
117 path, 文件夹路径
118 match=None, 正则匹配
119 recursive=False, 递归下面的文件夹
120 allow_files=True, 允许文件
121 allow_folders=False, 允许文件夹
122 required=True,
123 widget=None,
124 label=None,
125 initial=None,
126 help_text=''
127
128 GenericIPAddressField
129 protocol='both', both,ipv4,ipv6支持的IP格式
130 unpack_ipv4=False 解析ipv4地址,如果是::ffff:192.0.2.1时候,可解析为192.0.2.1, PS:protocol必须为both才能启用
131
132 SlugField(CharField) 数字,字母,下划线,减号(连字符)
133 ...
134
135 UUIDField(CharField) uuid类型
136 ...
2、Django内置插件如下:
TextInput(Input)
NumberInput(TextInput)
EmailInput(TextInput)
URLInput(TextInput)
PasswordInput(TextInput)
HiddenInput(TextInput)
Textarea(Widget)
DateInput(DateTimeBaseInput)
DateTimeInput(DateTimeBaseInput)
TimeInput(DateTimeBaseInput)
CheckboxInput
Select
NullBooleanSelect
SelectMultiple
RadioSelect
CheckboxSelectMultiple
FileInput
ClearableFileInput
MultipleHiddenInput
SplitDateTimeWidget
SplitHiddenDateTimeWidget
SelectDateWidget
3、常用选择插件
# user = fields.CharField(
# initial=2,
# widget=widgets.RadioSelect(choices=((1,'上海'),(2,'北京'),))
# ) # 单radio,值为字符串
# user = fields.ChoiceField(
# choices=((1, '上海'), (2, '北京'),),
# initial=2,
# widget=widgets.RadioSelect
# ) # 单select,值为字符串
# user = fields.CharField(
# initial=2,
# widget=widgets.Select(choices=((1,'上海'),(2,'北京'),))
# ) # 单select,值为字符串
# user = fields.ChoiceField(
# choices=((1, '上海'), (2, '北京'),),
# initial=2,
# widget=widgets.Select
# ) # 多选select,值为列表
# user = fields.MultipleChoiceField(
# choices=((1,'上海'),(2,'北京'),),
# initial=[1,],
# widget=widgets.SelectMultiple
# ) # 单checkbox
# user = fields.CharField(
# widget=widgets.CheckboxInput()
# ) # 多选checkbox,值为列表
# user = fields.MultipleChoiceField(
# initial=[2, ],
# choices=((1, '上海'), (2, '北京'),),
# widget=widgets.CheckboxSelectMultiple
# )
Django框架----Form组件补充的更多相关文章
- Django框架----Form组件
Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ...
- Django 框架 Form组件
一.Form组件简介 Form组件是django中一个非常强大的组件,在处理服务端和前端的交互上大大的提高了开发人员的开发速度. Form组件的功能: 用于处理前后端的数据认证(显示错误信息) 用于生 ...
- Django【第14篇】:Django之Form组件补充
补充 一.定义的规则 class TeacherForm(Form): #必须继承Form # 创建字段,本质上是正则表达式 username = fields.CharField( required ...
- django之Form组件补充
自定义验证规则 方法一: from django.forms import Form from django.forms import widgets from django.forms import ...
- python框架之Django(10)-Form组件
介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来.与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入 ...
- Django 三—— Form组件
内容概要: 1.Django Form如何自定义验证字段 2.Django Form如何动态的显示数据库中新插入的数据 3.Tyrion Django的Form(用于验证用户请求合法性的一个组件) D ...
- Django之Form组件(一)
Django之Form组件(一) Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 基本操作:字 ...
- 〖Python〗-- Django的Form组件
[Django的Form组件] Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 Form类的使 ...
- Django之Form组件
Django之Form组件 本节内容 基本使用 form中字段和插件 自定义验证规则 动态加载数据到form中 1. 基本使用 django中的Form组件有以下几个功能: 生成HTML标签 验证用户 ...
随机推荐
- 比Xshel更好用的 FinalShell
FinalShell功能特点: 1.多平台支持Windows,Mac OS X,Linux 2.多标签,批量服务器管理. 3.支持登录Ssh和Windows远程桌面. 4.漂亮的平滑字体显示,内置10 ...
- RN-android 打包后,部分图片不显示
安卓打包后以及真机调试的时候部分图片不显示,原因是 安卓的包文件并不会每次都把图片资源重新打包.也就是说,你第一次打完包之后,再更新图片与代码,代码是会生效,但是图片文件是拿不到的,解决办法是 ../ ...
- python的_thread模块来实现多线程(<python核心编程例子>)
python中_thread模块是一个低级别的多线程模块,它的问题在于主线程运行完毕后,会立马把子线程给结束掉,不加处理地使用_thread模块是不合适的.这里把书中讲述的有关_thread使用的例子 ...
- ORM表操作
1.在python脚本中调用django环境 在根文件夹下,创建test.py文件 import os if __name__ == '__main__': os.environ.setdefault ...
- C 函数声明及求最大值
#include <stdio.h> int main() { int a,b,c,max(int x,int y,int z); scanf("%d,%d,%d",& ...
- [LeetCode] 1. Two Sum_Easy
Given an array of integers, return indices of the two numbers such that they add up to a specific ta ...
- 实践 : Ubuntu 上 Testlink 部署
1.安装apache sudo apt-get install apache2 2. sudo /etc/init.d/apache2 restart 测试: Http:\localhost or I ...
- 从零开始一起学习SLAM | SLAM有什么用?
SLAM是 Simultaneous Localization And Mapping的 英文首字母组合,一般翻译为:同时定位与建图.同时定位与地图构建. 「同时定位与地图构建」这几个词,乍一听起来非 ...
- Java第一次考试作业
这次考试感觉自己充分的意识到自己的不足,对于Java没有系统的理解,敲程方面也有很大问题,本次程序题目为ATM机的账户记录Account有账户的唯一性标识,用户的姓名,操作日期(Date),操作类型, ...
- Linux.超级管理员root-密码破解
Linux.超级管理员root-密码破解 环境: 我是在虚拟机中安装的Linux,然后进行破解的.实体机,应该也是可以的,但我没有尝试过.如果你有实体机,试试吧... 又不要钱~ 在系统启动的时候,会 ...