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

Posted 95lyj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了7月2日 Django注册页面的form组件相关的知识,希望对你有一定的参考价值。

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组件的主要内容,如果未能解决你的问题,请参考以下文章

1.3 博客系统 |注册页

Django中用于创建注册页面的“没有这样的表”错误是啥?

网页布局——注册页面的居中对齐

7月2日 Django 生成验证码

6月28日 Django form表单

注册页面的JSON响应方式详细分析(与前端页面交互方式之一)