Django学习笔记之form组件的局部钩子和全局钩子(django form组件)

网友投稿 322 2022-09-02


Django学习笔记之form组件的局部钩子和全局钩子(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

源码中的钩子函数应用


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python入门之函数的嵌套/名称空间/作用域/函数对象/闭包函数(Python函数的嵌套)
下一篇:MyBatis解决Update动态SQL逗号的问题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~