Django学习笔记之form组件的局部钩子和全局钩子
本文通过注册页面的form组件,查看其中使用的全局钩子和局部钩子。
# Create your views here. class RegForm(forms.Form):username = forms.CharField(min_length=3,label="用户名",help_text=‘‘,error_messages={"required": "不能为空","invalid": "格式错误","min_length": "用户名最短8位"})password = forms.CharField(min_length=3,label="密码",help_text=‘6~16个字符,区分大小写‘,error_messages={"required": "不能为空","invalid": "格式错误",},widget=forms.widgets.PasswordInput)re_password = forms.CharField(min_length=3,label="确认密码",help_text=‘请再次填写密码‘,error_messages={"required": "不能为空","invalid": "格式错误",},widget=forms.widgets.PasswordInput)gender = forms.fields.ChoiceField(choices=((1, "男"), (2, "女"), (3, "保密")),label="性别",initial=3,widget=forms.widgets.RadioSelect)phone = forms.fields.CharField(label="电话",error_messages={"required": "不能为空",},)email = forms.fields.CharField(label=‘邮箱‘,help_text=‘6~18个字符,可使用字母、数字、下划线‘,widget=forms.widgets.EmailInput,error_messages={"required": "不能为空","invalid": "格式错误",},)# 批量给form表单里的字段加样式def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs)for field in iter(self.fields):field_obj = self.fields[field]if not isinstance(field_obj, forms.fields.ChoiceField):field_obj.widget.attrs.update({‘class‘: ‘form-control‘})# 全局钩子,此处用来判断两次输入的密码 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(‘两次密码不一致‘)else:return self.cleaned_data# 局部钩子函数,写给phone的校验函数def clean_phone(self):phone = self.cleaned_data.get(‘phone‘)if not re.findall(‘^1[0-9]{10}$‘, phone):raise ValidationError("格式错误!")else:return phone
关于钩子函数:
源码里的 forms/forms.py
源码中的钩子函数应用
转载于:https://www.cnblogs.com/JetpropelledSnake/p/9397889.html
Django学习笔记之form组件的局部钩子和全局钩子相关推荐
- vue学习笔记-03-浅谈组件-概念,入门,如何用props给组件传值?
vue学习笔记-03-浅谈组件-概念,入门,如何用props给组件传值? 文章目录 vue学习笔记-03-浅谈组件-概念,入门,如何用props给组件传值? 什么是组件? 为什么要使用组件? 如何使用 ...
- django学习笔记02
原创博客地址:django学习笔记02 第一章:模型层 1.8 查询操作 一.创建对象 1 2 3 4 5 >>> from blog.models import Blog > ...
- 千锋Django学习笔记
千锋Django学习笔记 文章目录 千锋Django学习笔记 写在前面 1. MVC和MTV 2. Django简介 3. MTV简单流程 4. 和Model的简单对接 5. Model 6. Tem ...
- django 学习笔记
django 学习笔记 启动虚拟机: workon bj18_py3 创建一个项目: django-admin.py startproject mysite 启动开发用服务器:从外层项目 mysite ...
- 分享:Django学习笔记(4)---ManyToMany 添加、删除关联、查询
Django学习笔记(4)---ManyToMany 添加.删除关联.查询 http://my.oschina.net/u/572994/blog/105280
- django学习笔记03
原创博客地址:django学习笔记03 第一章,模型层 查询集API 一.QuerySet何时被提交 迭代 QuerySet是可迭代的,在首次迭代查询集时执行实际的数据库查询 切片:如果使用切片的&q ...
- django学习笔记01
原创博客地址:django学习笔记01 基于教程,刘江的博客教程Django教程:https://www.liujiangblog.com/course/django/87 第一章:模型层 1.1 模 ...
- Django学习笔记---第一天
Django学习笔记 1.Django的安装 //如果不指定版本号,默认安装最新版 pip3 install django==1.11.8 关于Django的版本和python的版本依赖关系,请看下图 ...
- Django学习笔记(五)
Django学习笔记(五) MVC和MTV对比 传统的MVC(Model-View-Controller) M 模型层,主要是对数据库层的封装 V 视图层,向用户展示结果 C 控制层,用于请求,获取数 ...
- 梅科尔工作室-Django学习笔记(二次学习)(3)
本次学习的是如何用django实现前端鸿蒙OS登录 下面介绍一下本次的操作过程. 1.首先创立MySQL数据并将数据库导入到django当中 其中:导入数据库的操作: 2.配置urls 对应新建的pe ...
最新文章
- html5 生存游戏,html5版生命游戏
- Python学习(10)元组
- Leet Code OJ 206. Reverse Linked List [Difficulty: Easy]
- PowerTip of the Day from powershell.com上周汇总(六)
- 钱币掉落动画android,mpvue实现小程序签到金币掉落动画(api实现)
- JAVA-Lambda表达式
- C/C++ SQLite 之基础篇
- 计算机术语列是,计算机术语-RAM ROM
- 一些必看的jQuery导航插件和教程
- C#与vb6 com组件的互相调用方法
- globalmapper如何选取图像上的点_图像配准算法
- 利用IsPostBack检查网页是不是第一次进入(asp.net)
- canvas贝塞尔曲线爱心_HTML5 Canvas 绘制贝塞尔曲线 Bezier and quadratic curves
- 【低代码平台浅析】钉钉宜搭
- Unity CityEngine 根据地图中建筑矢量数据批量建模
- 用WebCollector 2.x爬取新浪微博(无需手动获取cookie)
- 解决桥接模式连接虚拟机的问题
- 王健林:万达体育和传奇影业都要开展资本运作 今年要出成绩
- Manifest is not valid JSON. Line: 1, column: 1 项目打包报错解决方法
- nginx另类复杂的架构