Django 登入效验
.py
from django import forms
from student import models
from django.core.exceptions import ValidationError
from django.core.validators import RegexValidator
class RegForm(forms.Form):
username = forms.CharField(
max_length=16,
label="用户名",
widget=forms.widgets.TextInput(attrs={"class": "form-control"},),
error_messages={
"max_length": "用户名最长16位",
"required": "用户名不能为空",
}
)
password = forms.CharField(
min_length=6,
max_length=10,
label="密码",
widget=forms.widgets.PasswordInput(attrs={"class": "form-control"},),
error_messages={
"max_length": "最小长度为6",
"required": "密码不能为空",
}
)
re_password = forms.CharField(
min_length=6,
max_length=10,
label="确认密码",
widget=forms.widgets.PasswordInput(attrs={"class": "form-control"}, render_value=True),
error_messages={
"min_length": "密码最少6位",
"required": "密码不能为空",
}
)
gender = forms.ChoiceField(
choices=(('男', "男"), ('女', "女")),
label="性别",
initial=1,
widget=forms.widgets.RadioSelect
)
age = forms.CharField(
max_length=10,
label="年龄",
widget=forms.widgets.TextInput(attrs={"class": "form-control"}),
)
addr = forms.CharField(
max_length=32,
label="地址",
widget=forms.widgets.TextInput(attrs={"class": "form-control"}),
error_messages={
"required": "地址不能为空",
}
)
phone = forms.CharField(
label="手机",
validators=[
RegexValidator(r'^1[3-9][0-9]{9}$', '手机格式不正确')
],
widget=forms.widgets.TextInput(attrs={"class": "form-control"}),
error_messages={
"required": "手机不能为空"
}
)
# 重写username字段的局部钩子
def clean_username(self):
username = self.cleaned_data.get("username")
is_exist = models.Student.objects.filter(username=username)
if is_exist:
# 表示用户名已注册
self.add_error("username", ValidationError("用户名已存在!"))
else:
return username
# 重写全局的钩子函数, 对确认密码做效验
def clean(self):
password = self.cleaned_data.get("password")
re_password = self.cleaned_data.get("re_password")
if re_password and re_password != password:
self.add_error("re_password", ValidationError("两次密码不一致"))
else:
return self.cleaned_data
View Code
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:django Form 效验 - Python技术站