###目录:
#1.Form 基本使用
django中的Form组件有以下几个功能:
- 生成HTML标签
- 验证用户数据(显示错误信息)
- HTML Form提交保留上次提交数据
- 初始化页面显示内容
#2.Form中字段及插件
创建Form类时,主要涉及到 【字段】 和 【插件】,字段用于对用户请求数据的验证,插件用于自动生成HTML;
####1.Django内置字段如下:
- Field:
1 | 复制代码required=True, 是否允许为空 |
- CharField(Field)
1 | 复制代码max_length=None, 最大长度 |
- IntegerField(Field), FloatField(IntegerField)
1 | 复制代码max_value=None, 最大值 |
- DecimalField(IntegerField) 小数,举例,涉及金钱计算保留小数点后两位
1 | 复制代码max_value=None, 最大值 |
- BaseTemporalField(Field)
1 | 复制代码input_formats=None 时间格式化 |
1 | 复制代码DateField(BaseTemporalField) 格式:2015-09-01 |
- RegexField(CharField)
1 | 复制代码regex, 自定制正则表达式 |
EmailField(CharField) …
- FileField(Field)
1 | 复制代码allow_empty_file=False 是否允许空文件 |
- ImageField(FileField)
1 | 复制代码... |
URLField(Field)…
BooleanField(Field)…
NullBooleanField(BooleanField)…
- ChoiceField(Field)
1 | 复制代码choices=(), 选项,如:choices = ((0,'上海'),(1,'北京'),) |
- TypedChoiceField(ChoiceField)
1 | 复制代码coerce = lambda val: val 对选中的值进行一次转换,通过lambda函数实现 |
- MultipleChoiceField(ChoiceField)多选框…
- TypedMultipleChoiceField(MultipleChoiceField)
1 | 复制代码coerce = lambda val: val 对选中的每一个值进行一次转换 |
- ComboField(Field)
1 | 复制代码fields=() 使用多个验证,如下:即验证最大长度20,又验证邮箱格式 |
- MultiValueField(Field): 抽象类,子类中可以实现聚合多个字典去匹配一个值,要配合MultiWidget使用,提供接口,需要自己实现
- SplitDateTimeField(MultiValueField)
1 | 复制代码input_date_formats=None, 格式列表:['%Y--%m--%d', '%m%d/%Y', '%m/%d/%y'] |
- FilePathField(ChoiceField) 文件选项,目录下文件显示在页面中
1 | 复制代码path, 文件夹路径 |
- GenericIPAddressField
1 | 复制代码protocol='both', both,ipv4,ipv6支持的IP格式 |
- **SlugField(CharField) :**数字,字母,下划线,减号(连字符)
- **UUIDField(CharField) :**uuid类型
1 | 复制代码import uuid |
- Django内置插件:
1 | 复制代码TextInput(Input) #input type="text" |
- 常用的选择插件
1 | 复制代码# 单radio,值为字符串 |
Django模版加减乘除:
1 | 复制代码Django模版加法: |
#3.通过Django表单Form来完成需求
###1.根据用户填写表单的不同跳往不同的页面
1.先创建app项目名:djangoform
2.app下创建文件夹djangoform,并建立表单form1.py
1 | 复制代码# -*- coding:utf8 -*- |
3.app下创建templates文件夹,并创建不同的html网页
- index.html
1 | 复制代码<!DOCTYPE html> |
- page1.html
1 | 复制代码<!DOCTYPE html> |
- page2.html
1 | 复制代码<!DOCTYPE html> |
其他几个网页类似
4.建立视图views.py
1 | 复制代码# -*- coding: utf-8 -*- |
5.定义视图函数相关的·urls.py·
1 | 复制代码from django.conf.urls import include, url |
6.把我们新定义的app加到settings.py中的INSTALL_APPS中和urls中,详情见Django教程(一)- Django视图与网址
效果展示:
##2.在网页上打印9*9乘法表
- home.html
1 | 复制代码<!DOCTYPE html> |
- views.py
1 | 复制代码# -*- coding: utf-8 -*- |
- urls.py
1 | 复制代码from django.conf.urls import url |
效果展示:
##3.在网页上打印1-100之间的偶数
先了解下python中map函数
1 | 复制代码>>> map(str, range(5)) #对range(5)各项进行str操作 |
- views.py
1 | 复制代码# -*- coding: utf-8 -*- |
- urls.py
1 | 复制代码from django.conf.urls import url |
- even.html
1 | 复制代码<!DOCTYPE html> |
效果如下:
#4.自定义验证验证规则
- 方式1:在字段中自定义validators设计正则匹配
1 | 复制代码from django.forms import Form |
- 方式2:自定义规则函数处理数据
1 | 复制代码import re |
本文转载自: 掘金