forms.py里注册页面的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

1、

2、

最新文章

  1. JavaScript权威设计--JavaScript类型,值,变量(简要学习笔记三)
  2. 中国天气网放回json的解释
  3. IAR之文件路径设置
  4. opencv-3.x.0-x86-mingw32-staticlib-gcc5.3.0-20160712.7z
  5. Git常用命令(自己总是忘记,整理在这里)
  6. HDU 1848 Fibonacci again and again (斐波那契博弈SG函数)
  7. HDU 3746 Cyclic Nacklace 环形项链(KMP,循环节)
  8. DbUtility-关于DataTable转成List的效率问题
  9. AngularJS 不得不了解的服务 $compile 用于动态显示html内容
  10. 【codevs】2292图灵机游戏
  11. CentOS的配置文件
  12. Linux中的定时任务at、crontab
  13. [Python] 文科生零基础学编程系列二——数据类型、变量、常量的基础概念
  14. JDBC的基本用法
  15. java设计模式—— 工厂模式
  16. Cocos2D中屏幕分辨率解释
  17. How to create ISO on macOS
  18. 深入浅出MFC——消息映射与命令传递(六)
  19. Jenkins系列之Jenkins的安装
  20. gcd?人生赢家!

热门文章

  1. yum 搭建私有仓库
  2. Python基础—基础数据类型list(Day4)
  3. k8s-cka考试题库
  4. yaml语法及格式校验
  5. [杂记]LeTeX中使用tikz画图的一些实例
  6. 【C# 调试】.net中的 .pdb文件是什么,有什么用
  7. c语言怎么避免打印空数据?
  8. 哈工大 信息安全实验 XSS跨站脚本攻击原理与实践
  9. WIN10:删除开始菜单栏中的文件夹
  10. Vue中组件的递归