from django import forms
from django.forms import ModelForm
from auther.models import Userpro
from django.core.validators import RegexValidator
from django.core.exceptions import ValidationError
class UserProForm(ModelForm):
enroll_time = forms.DateTimeField(label='注册日期',required=False)
user = forms.IntegerField(label='用户',required=False)
mail_code = forms.CharField(label='验证码',required=False)
username = forms.CharField(label='用户名',min_length=5,max_length=8,error_messages={
'min_length': '用户名最少5位',
'max_length': '用户名最大8位',
'required': '真实姓名不能为空',
},
validators=[RegexValidator(r'^[^\s]+$','用户名不能包含空格')]
)
mail = forms.CharField(label='邮箱',
error_messages={
'invalid': '邮箱格式不正确',
"required": "该字段不能为空"
},
validators=[RegexValidator(r'^[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){0,4}@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){0,4}$','邮箱验证失败!')]
)
ready_name = forms.CharField(label='真实姓名',min_length=2,max_length=32,error_messages={
'min_length': '真实姓名最少2位',
'max_length': '真实姓名最大8位',
'required': '真实姓名不能为空',
},
validators=[RegexValidator(r'^[^\s]+$', '真实姓名不能包含空格')]
)
ver = forms.CharField(label='验证码',
error_messages={
'invalid': '验证码格式不正确',
"required": "该字段不能为空"
}
)
pwd = forms.CharField(label='密码',min_length=8,max_length=16,error_messages={
'min_length': '密码最少8位',
'max_length': '密码最大16位',
'invalid': '密码格式不正确',
"required": "该字段不能为空"
},
validators=[RegexValidator(r'^[^\s]+$', '密码不能包含空格')]
)
upwd = forms.CharField(label='重复密码',min_length=8,max_length=16,error_messages={
'min_length': '确认密码最少8位',
'max_length': '确认密码最大16位',
'invalid': '重复密码格式不正确',
"required": "该字段不能为空"
},
validators=[RegexValidator(r'^[^\s]+$', '确认密码不能包含空格')]
)
def clean_password(self):
if self.cleaned_data.get('pwd').isdigit() or self.cleaned_data.get('upwd').isalpha():
raise ValidationError('密码必须包含数字和字母')
else:
return self.cleaned_data['password']
def clean(self):
if self.cleaned_data.get('pwd') != self.cleaned_data.get('upwd'):
raise ValidationError('密码不一致')
else:
return self.cleaned_data
class Meta:
model = Userpro
fields = '__all__'
名称 | 说明 |
---|
label | 字段名 |
error_messages | 自定义报错信息[initial=‘yangyi’] |
initial | 默认值 |
required | 控制字段是否必填[required=False] |
min_length | 最小字段 |
max_lenght | 最大字段 |
validator | 正则 |
widget | 给标签添加一定的属性 |
username = forms.CharField(
min_length=3,
max_length=8,
label='用户名',
error_messages={
'min_length': '用户名最少3位',
'max_length': '用户名最大8位',
'required': "用户名不能为空"
},
widget=forms.widgets.TextInput(
attrs={
'class': 'form-control c1 c2'
}
)
)
password = forms.CharField(
min_length=3,
max_length=8,
label='密码',
error_messages={
'min_length': '密码最少3位',
'max_length': '密码最大8位',
'required': "密码不能为空"
},
widget=forms.widgets.PasswordInput(
attrs={
'class': 'form-control'
}
)
)
from django.core.validators import RegexValidator
confirm_password = forms.CharField(
min_length=3,
max_length=8,
label='密码',
error_messages={
'min_length': '密码最少3位',
'max_length': '密码最大8位',
'required': "密码不能为空"
},
widget=forms.widgets.PasswordInput(
attrs={
'class': 'form-control c1 c2'
}
),
validators=[
RegexValidator(r'^[0-9]+$', '请输入数字'),
RegexValidator(r'^159[0-9]+$', '数字必须以159开头')
]
)
email = forms.EmailField(
label='邮箱',
error_messages={
'invalid': '邮箱格式不正确',
'required': "邮箱不能为空"
},
widget=forms.widgets.EmailInput(
attrs={
'class': 'form-control'
}
)
)
gender = forms.ChoiceField(
choices=((1, "男"), (2, "女"), (3, "保密")),
label="性别",
initial=3,
widget=forms.widgets.RadioSelect()
)
hobby = forms.ChoiceField(
choices=((1, "篮球"), (2, "足球"), (3, "双色球"),),
label="爱好",
initial=3,
widget=forms.widgets.Select()
)
hobby1 = forms.MultipleChoiceField(
choices=((1, "篮球"), (2, "足球"), (3, "双色球"),),
label="爱好",
initial=[1, 3],
widget=forms.widgets.SelectMultiple()
)
keep = forms.ChoiceField(
label="是否记住密码",
initial="checked",
widget=forms.widgets.CheckboxInput()
)
hobby2 = forms.MultipleChoiceField(
choices=((1, "篮球"), (2, "足球"), (3, "双色球"),),
label="爱好",
initial=[1, 3],
widget=forms.widgets.CheckboxSelectMultiple()
)