django_day07
django_day07
django form组件
form组件的定义
class RegForm(forms.Form):
user = forms.CharField(label='用户名')
pwd = forms.CharField(label='密码')
使用
def reg2(request):
form_obj = RegForm()
if request.method == 'POST':
#对提交的数据做校验
form_obj = RegForm(request.POST)
if form_obj.is_valid():#对数据进行校验
#校验成功
return HttpResponse('注册成功')
return render(request,'reg2.html',{'form_obj':form_obj})
模板
{{ form_obj.as_p }} 一次性生成所有的input框
{{ form_obj.user }} 生成该字段的input框
{{ form_obj.user.label }} 该字段提示的信息
{{ form_obj.user.id_for_label }} 该字段的input框的id
{{ form_obj.errors }} 所有字段的错误
{{ form_obj.user.errors.0 }} 该字段的错误
常用字段
CharField 文本输入框
ChoiceField 单选 默认是select
MultipleChoiceField 多选 默认是select
字段参数
initial = "张三" 默认值
choices 用户选择数据
error_messages={} 自定义错误信息
widget=forms.PasswordInput 修改input框的类型 required=False, 是否必填
disabled=False, 是否禁用
校验
校验器
def check_name(value):
#不符合规则
if 'lsl' in value:
raise ValidationError("德玛西亚") #捕获错误i
#符合规则不做任何操作 user = forms.CharField(
....
validators=[check_name],#校验器
... )
使用内置的校验器
from django.core.validators import RegexValidator phone = forms.CharField(validators=[RegexValidator(r'^1[3-9]\d{9}$','手机号格式不正确')])钩子函数
局部钩子
#写在类里面
def clean_user(self):#局部钩子
#不符合校验规则
value = self.cleaned_data.get('user')
if 'lsl' in value:
raise ValidationError("德玛西亚") # 捕获错误i
#符合校验规则
return value
全局钩子
def clean(self):#全局钩子
#不符合校验规则 pwd = self.cleaned_data.get('pwd')
re_pwd = self.cleaned_data.get('re_pwd')
if pwd != re_pwd:
#将错误信息加入某个字段里面
self.add_error('re_pwd','两次密码不一致')
raise ValidationError('两次密码不一致')
#符合校验规则 return self.cleaned_data
django_day07的更多相关文章
随机推荐
- 27.MySQL 索引、事务与存储引擎
MySQL 索引.事务与存储引擎 目录 MySQL 索引.事务与存储引擎 MySQL 索引 索引的概念 索引的作用及副作用 索引的作用 索引的副作用 创建索引的原则依据 索引的分类和创建 普通索引 唯 ...
- C++ 炼气期之算术运算符
1. 前言 编写程序时,数据确定后,就需要为数据提供相应的处理逻辑(方案或算法).所谓逻辑有 2 种存在形态: 抽象形态:存在于意识形态,强调思考过程,与具体的编程语言无关. 具体形态:通过代码来实现 ...
- vue开发必须知道的小技巧
近年来,vue越来越火,使用它的人也越来越多.vue基本用法很容易上手,但是还有很多优化的写法你就不一定知道了.本文列举了一些vue常用的开发技巧.require.context() 在实际开发中,绝 ...
- SAP 日期计算
1. CONVERSION_EXIT_IDATE_OUTPUT INPUT: 20200601 OUTPUT: 03FEB2008 2. CONVERT_DATE_TO_ ...
- 用Python做了个图片识别系统(附源码)
本项目将使用python3去识别图片是否为色情图片,会使用到PIL这个图像处理库,并且编写算法来划分图像的皮肤区域 介绍一下PIL: PIL(Python Image Library)是一种免费的图像 ...
- python做小游戏——做个马里奥分分钟解决
一.前言 嗨喽,大家好呀!这里是小熊猫 在你的童年记忆里,是否有一个蹦跳.顶蘑菇的小人已经被遗忘? 马里奥是靠吃蘑菇成长,闻名世界的超级巨星.特征是大鼻子.头戴帽子.身穿背带工作服.还留着胡子.帽子加 ...
- 实践GoF的23种设计模式:装饰者模式
摘要:装饰者模式通过组合的方式,提供了能够动态地给对象/模块扩展新功能的能力.理论上,只要没有限制,它可以一直把功能叠加下去,具有很高的灵活性. 本文分享自华为云社区<[Go实现]实践GoF的2 ...
- 自建批量更改标准BO数据程序
by zyi
- 创建多线程程序的第一种方式_创建Thread类的子类
创建多线程程序的第一种方式:创建Thread类的子类java.lang.Thread类:是描述线程的类,我们想要实现多线程程序,就必须继承Thread类 实现步骤: 1.创建一个Thread类的子类 ...
- String类常用的API
String类常用的API 字符串内容的比较: 注意: 不能使用 == 去比较两个字符串的内容.原理:比较的是字符串的地址. (如果两个字符串都是使用""进行赋值,那么他们都是放在 ...