码迷,mamicode.com
首页 > 其他好文 > 详细

7月2日 Django注册页面的form组件

时间:2018-07-04 23:38:47      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:rms   sel   ima   img   image   add   保密   .com   date   

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、

技术分享图片

 

技术分享图片

 

 

7月2日 Django注册页面的form组件

标签:rms   sel   ima   img   image   add   保密   .com   date   

原文地址:https://www.cnblogs.com/95lyj/p/9265912.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!