class PwdForm(Form): """修改密码Form""" old_password = fields.CharField( max_length=64, error_messages={'required': '原密码不能为空'}, widget=forms.PasswordInput(attrs={ 'class': 'form-control', 'placeholder': "请输入原密码" })) new_password = fields.RegexField( regex=r"^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{6,12}$", max_length=64, error_messages={ 'required': '新密码不能为空', 'invalid': '新密码格式有误,请重新输入' }, widget=forms.PasswordInput(attrs={ 'class': 'form-control', 'placeholder': "6-12位字母与数字组合" })) repeat_password = fields.RegexField( regex=r"^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{6,12}$", max_length=64, error_messages={ 'required': '确认密码不能为空', 'invalid': '确认密码格式有误,请重新输入' }, widget=forms.PasswordInput(attrs={ 'class': 'form-control', 'placeholder': "请再次输入新密码" }))
class UserProfileForm(forms.Form): username_rex = '^[A-Za-z][A-Za-z0-9_]{%s,%s}$' \ % (config.reg_username_min_len, config.reg_username_max_len) password_rex = '^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[\!]).{8,32}$' email = forms.EmailField(max_length=128, required=False) phone = fields.RegexField("^1\d{10}$", required=True, error_messages={ 'invalid': "手机号格式不对", 'required': '手机号不能为空' }) username = fields.RegexField(username_rex, required=True, error_messages={ 'invalid': '用户名格式不合法', 'required': '用户名不能为空' }) password = fields.RegexField(password_rex, required=True, error_messages={ 'invalid': '密码不合法', 'required': '密码不能为空' }) password2 = fields.RegexField(password_rex, required=True, error_messages={ 'invalid': '密码不合法', 'required': '密码不能为空' })
class RegisterForm(BaseForm, django_forms.Form): username = fields.CharField( # required= False, error_messages={ 'required': '用户名不能为空', }) email = fields.EmailField(error_messages={ 'required': '邮箱不能为空', 'invalid': '邮箱格式不正确', }) password = fields.RegexField( '^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[!@#$\%\^\&\*\(\)])[0-9a-zA-Z!@#$\%\^\&\*\(\)]{8,32}$', min_length=8, max_length=32, error_messages={ 'required': '密码不能为空', 'invalid': '密码必须包含字母,数字,特殊字符', 'min_length': "密码长度不能小于8个字符", 'max_length': "密码长度不能大于32个字符", }) second_password = fields.RegexField( '^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[!@#$\%\^\&\*\(\)])[0-9a-zA-Z!@#$\%\^\&\*\(\)]{8,32}$', min_length=8, max_length=32, error_messages={ 'required': '确认密码不能为空', 'invalid': '确认密码必须包含字母,数字,特殊字符', 'min_length': "确认密码长度不能小于8个字符", 'max_length': "确认密码长度不能大于32个字符", }) check_code = fields.CharField(error_messages={'required': '验证码不能为空'}) def clean_username(self): v = self.cleaned_data.get( 'username') # self.cleaned_data其实就是self.request.POST user_count = models.UserInfo.objects.filter(username=v).count() if user_count: raise ValidationError(message='用户名已存在') return v def clean_check_code(self): # if self.request.session.get('CheckCode').upper() != self.request.POST.get('check_code').upper(): if self.request.session.get('CheckCode').upper( ) != self.cleaned_data.get('check_code').upper(): raise ValidationError(message='验证码错误', code='invalid') def clean(self): password = self.cleaned_data.get('password') sec_password = self.cleaned_data.get('second_password') if password != sec_password: raise ValidationError('两次密码不一致') return self.cleaned_data
class ActivistInfoForm(Form): """积极分子信息修改Form""" activist_name = fields.RegexField( regex=r'^[\u4E00-\u9FA5]{2,6}$', max_length=32, error_messages={ 'required': '姓名不能为空!', 'invalid': '姓名格式有误!' }, widget=fields.TextInput(attrs={ 'class': 'form-control', 'placeholder': "请输入姓名(2-6个汉字)" })) activist_gender = fields.ChoiceField(choices=(('男', '男'), ('女', '女')), initial='男', widget=widgets.Select()) activist_phone = fields.RegexField( regex=r"^1[356789]\d{9}$", max_length=32, error_messages={ 'required': '手机号码不能为空!', 'invalid': '手机号码格式有误!' }, widget=fields.TextInput(attrs={ 'class': 'form-control', 'placeholder': "请输入手机号码" })) activist_email = fields.EmailField( max_length=32, error_messages={ 'required': '邮箱不能为空!', 'invalid': '邮箱格式有误!' }, widget=fields.TextInput(attrs={ 'class': 'form-control', 'placeholder': "请输入邮箱" })) apply_date = forms.DateField(error_messages={'required': '申请入党日期不能为空!'}, widget=forms.TextInput(attrs={ 'class': 'form-control', 'type': 'date' })) voluntary_time = fields.IntegerField( error_messages={'required': '志愿时长不能为空!'}, widget=forms.TextInput(attrs={ 'class': 'form-control', 'placeholder': "请输入正整数的时长" }))
class RegisterForm(BaseForm, forms.Form): username = fields.CharField(min_length=6, max_length=20, error_messages={ 'required': '用户名不能为空', 'min_length': '用户名长度不小于6字符', 'max_length': '用户名长度不大于32字符' }) password = fields.RegexField( regex= '^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[!@#$\%\^\&\*\(\)])[0-9a-zA-Z!@#$\%\^\&\*\(\)]{8,32}$', min_length=12, max_length=32, error_messages={ 'required': '密码不能为空', 'invalid': '密码必须包含数字,字母、特殊字符', 'min_length': '用户名长度不小于12字符', 'max_length': '用户名长度不大于32字符' }) confirm_password = fields.RegexField( regex= '^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[!@#$\%\^\&\*\(\)])[0-9a-zA-Z!@#$\%\^\&\*\(\)]{8,32}$', min_length=12, max_length=32, error_messages={ 'required': '密码不能为空', 'invalid': '密码必须包含数字,字母、特殊字符', 'min_length': '用户名长度不小于12字符', 'max_length': '用户名长度不大于32字符' }) check_code = fields.CharField(max_length=4, error_messages={ 'required': '验证码错误', 'max_length': '验证码错误' }) def clean_check_code(self): if self.request.session.get('CheckCode').upper( ) != self.request.POST.get('check_code').upper(): raise ValidationError(message='验证码错误', code='invalid') def clean(self): if 'password' in self.cleaned_data and 'confirm_password' in self.cleaned_data: v1 = self.cleaned_data['password'] v2 = self.cleaned_data['confirm_password'] if v1 == v2: pass else: from django.core.exceptions import ValidationError, NON_FIELD_ERRORS raise ValidationError('密码输入不一致')
class LoginForm(BaseForm, django_forms.Form): username = django_fields.CharField(min_length=6, max_length=20, error_messages={ 'required': '用户名不能为空.', 'min_length': "用户名长度不能小于6个字符", 'max_length': "用户名长度不能大于32个字符" }) password = django_fields.RegexField( #正则表达 '^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[!@#$\%\^\&\*\(\)])[0-9a-zA-Z!@#$\%\^\&\*\(\)]{8,32}$', min_length=12, max_length=32, error_messages={ 'required': '密码不能为空.', 'invalid': '密码必须包含数字,字母、特殊字符', 'min_length': "密码长度不能小于8个字符", 'max_length': "密码长度不能大于32个字符" }) #验证码框 check_code = django_fields.CharField( error_messages={'required': '验证码不能为空.'}) #内置勾子 验证码 校对 def clean_check_code(self): #获取输入的验证码 生成的验证码 if self.request.session.get('CheckCode').upper( ) != self.request.POST.get('check_code').upper(): #不相等 返回错误信息 raise ValidationError(message='验证码错误', code='invalid')
class PasswordForm(Form): def __init__(self, request, *args, **kwargs): super(PasswordForm, self).__init__(*args, **kwargs) self.user = request.session.get('user_info') pwd = fields.CharField(widget=widgets.PasswordInput( attrs={'class': 'form-control'})) pwd1 = fields.RegexField( regex=r'^(?=.*[A-z])(?=.*\d)(?=.*[#@!~%^&*])[A-z\d#@!~%^&*]{8,16}$', min_length=8, max_length=16, error_messages={ 'required': '密码不能为空', 'invalid': '密码必须包含字母数字和特殊字符', 'min_length': '密码长度不能小于8个字符', 'max_length': '密码长度不能超过16个字符', }, widget=widgets.PasswordInput(attrs={'class': 'form-control'}), # validators=[RegexValidator(r'^(?=.*[A-z])(?=.*\d)(?=.*[#@!~%^&*])[A-z\d#@!~%^&*]{8,16}$')] ) pwd2 = fields.CharField(widget=widgets.PasswordInput( attrs={'class': 'form-control'})) def clean_pwd(self): if self.cleaned_data.get('pwd') != self.user['pwd']: raise ValidationError('原密码不正确!') return self.cleaned_data['pwd'] def clean(self): value_dict = self.cleaned_data pwd1 = value_dict.get('pwd1') pwd2 = value_dict.get('pwd2') if pwd1 != pwd2: raise ValidationError('两次密码不一致') return self.cleaned_data
class RegisterForm(BaseForm, django_forms.Form): username = django_fields.CharField(min_length=6, max_length=20, error_messages={ 'required': '用户名不能为空.', 'min_length': "用户名长度不能小于6个字符", 'max_length': "用户名长度不能大于32个字符" }) password = django_fields.RegexField( '^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[!@#$\%\^\&\*\(\)])[0-9a-zA-Z!@#$\%\^\&\*\(\)]{8,32}$', min_length=6, max_length=32, error_messages={ 'required': '密码不能为空.', 'invalid': '密码必须包含数字,字母、特殊字符', 'min_length': "密码长度不能小于8个字符", 'max_length': "密码长度不能大于32个字符" }) email = django_fields.EmailField() confirm_password = django_fields.CharField() check_code = django_fields.CharField( error_messages={'required': '验证码不能为空'}) nickname = django_fields.CharField() print(username, nickname) def clean_check_code(self): if self.request.session.get('CheckCode').upper( ) != self.request.POST.get('check_code').upper(): raise ValidationError(message='验证码错误', code='invalid') def clean_confirm_password(self): if self.request.POST.get('password').upper() != self.request.POST.get( 'confirm_password').upper(): raise ValidationError(message='密码不一致', code='invalid')
class CheckForm(c_forms.Form): new_password = c_fields.RegexField( '(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{8,30}', # 密码必须同时包含大写、小写、数字和特殊字符其中三项且至少8位 strip=True, min_length=8, max_length=30, error_messages={ 'required': '新密码不能为空.', 'invalid': '密码必须包含数字,字母、特殊字符', 'min_length': "密码长度不能小于8个字符", 'max_length': "密码长度不能大于30个字符" }) old_password = c_fields.CharField(error_messages={'required': '确认密码不能为空'}) ensure_password = c_fields.CharField( error_messages={'required': '确认密码不能为空'}) user_email = c_fields.CharField(error_messages={ 'required': '邮箱不能为空', 'invalid': '邮箱格式错误' }) def clean(self): pwd0 = self.cleaned_data.get('old_password') pwd1 = self.cleaned_data.get('new_password') pwd2 = self.cleaned_data.get('ensure_password') if pwd1 == pwd2: pass elif pwd0 == pwd1: # 这里异常模块导入要放在函数里面,放到文件开头有时会报错,找不到 from django.core.exceptions import ValidationError raise ValidationError('新旧密码不能一样') else: from django.core.exceptions import ValidationError raise ValidationError('新密码和确认密码输入不一致')
class InfoForm(Form): """完善信息Form""" # """修改信息Form""" activist_email = fields.EmailField( max_length=32, error_messages={'required': '邮箱不能为空', 'invalid': '邮箱格式有误!'}, widget=fields.TextInput(attrs={'class': 'form-control', 'placeholder': "请输入邮箱"}) ) activist_phone = fields.RegexField( regex=r"^1[356789]\d{9}$", max_length=32, error_messages={'required': '手机号码不能为空', 'invalid': '手机号码格式有误!'}, widget=fields.TextInput(attrs={'class': 'form-control', 'placeholder': "请输入手机号码"}) ) apply_date = forms.DateField( error_messages={'required': '申请入党日期不能为空'}, widget=forms.TextInput(attrs={'class': 'form-control', 'type': 'date'}) ) voluntary_time = fields.IntegerField( error_messages={'required': '志愿时长不能为空!'}, widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': "请输入正整数的时长"}) )
class LoginForm(BaseForm, django_forms.Form): username = django_fields.CharField( # min_length=6, # max_length=20, error_messages={ 'required': '用户名不能为空.', 'min_length': "用户名长度不能小于6个字符", 'max_length': "用户名长度不能大于32个字符" }) password = django_fields.RegexField( '^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[!@#$\%\^\&\*\(\)])[0-9a-zA-Z!@#$\%\^\&\*\(\)]{8,32}$', min_length=8, max_length=32, error_messages={ 'required': '密码不能为空.', 'invalid': '密码必须包含数字,字母、特殊字符', 'min_length': "密码长度不能小于8个字符", 'max_length': "密码长度不能大于32个字符" }) rmb = django_fields.IntegerField(required=False) check_code = django_fields.CharField( error_messages={'required': '验证码不能为空.'}) def clean_check_code(self): if self.request.session.get('CheckCode').upper( ) != self.request.POST.get('check_code').upper(): raise ValidationError(message='验证码错误', code='invalid')
class Register(ac_forms.Form): username = ac_fields.CharField(error_messages={'required': '用户名不能为空'}) #password = ac_fields.CharField(error_messages={'required': '密码不能为空'}) password = ac_fields.RegexField( '^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[!@#$\%\^\&\*\(\)])[0-9a-zA-Z!@#$\%\^\&\*\(\)]{8,32}$', min_length=8, max_length=32, error_messages={ 'required': '密码不能为空.', 'invalid': '密码必须包含数字,字母、特殊字符', 'min_length': "密码长度不能小于8个字符", 'max_length': "密码长度不能大于32个字符" }) repassword = ac_fields.CharField(error_messages={'required': '确认密码不能为空'}) email = ac_fields.CharField(error_messages={ 'required': '邮箱不能为空', 'invalid': '邮箱格式错误' }) check_code = ac_fields.CharField(error_messages={ 'required': '验证码不能为空', 'invalid': '邮箱格式错误' }) def clean(self): pwd1 = self.cleaned_data.get('password') pwd2 = self.cleaned_data.get('repassword') if pwd1 == pwd2: pass else: #from django.core.exceptions import ValidationError raise ValidationError('两次密码输入不一致')
class LoginForm(BaseForm, forms.Form): username = fields.CharField(min_length=6, max_length=20, error_messages={ 'required': '用户名不能为空', 'min_length': '用户名长度不小于6字符', 'max_length': '用户名长度不大于20字符' }) password = fields.RegexField( regex= '^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[!@#$\%\^\&\*\(\)])[0-9a-zA-Z!@#$\%\^\&\*\(\)]{8,32}$', min_length=12, max_length=32, error_messages={ 'required': '密码不能为空', 'invalid': '密码必须包含数字,字母、特殊字符', 'min_length': '用户名长度不小于12字符', 'max_length': '用户名长度不大于32字符' }) # 过期时间 rmb = fields.IntegerField(required=False) check_code = fields.CharField(max_length=4, error_messages={ 'required': '验证码错误', 'max_length': '验证码错误' }) def clean_check_code(self): if self.request.session.get('CheckCode').upper( ) != self.request.POST.get('check_code').upper(): raise ValidationError(message='验证码错误', code='invalid')
class RegisterForm(BaseForm, django_forms.Form): username1 = django_fields.CharField(min_length=3, max_length=20, error_messages={ 'required': '用户名不能为空.', 'min_length': "用户名长度不能小于3个字符", 'max_length': "用户名长度不能大于32个字符" }) email1 = django_fields.EmailField(error_messages={ 'required': '邮箱不能为空.', 'invalid': "邮箱格式错误" }) password1 = django_fields.RegexField( '^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[!@#$\%\^\&\*\(\)])[0-9a-zA-Z!@#$\%\^\&\*\(\)]{8,32}$', min_length=8, max_length=32, error_messages={ 'required': '密码不能为空.', 'invalid': '密码必须包含数字,字母、特殊字符', 'min_length': "密码长度不能小于8个字符", 'max_length': "密码长度不能大于32个字符" }) password2 = django_fields.RegexField( '^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[!@#$\%\^\&\*\(\)])[0-9a-zA-Z!@#$\%\^\&\*\(\)]{8,32}$', min_length=8, max_length=32, error_messages={ 'required': '密码不能为空.', 'invalid': '密码必须包含数字,字母、特殊字符', 'min_length': "密码长度不能小于8个字符", 'max_length': "密码长度不能大于32个字符" }) check_code1 = django_fields.CharField( error_messages={'required': '验证码不能为空.'}) def clean_check_code1(self): if self.request.session.get('CheckCode').upper( ) != self.request.POST.get('check_code1').upper(): raise ValidationError(message='验证码错误!!!', code='invalid') def clean_password2(self): password1 = self.cleaned_data.get('password1') password2 = self.cleaned_data.get('password2') if password1 and password2 and password1 != password2: raise ValidationError("两次密码输入不一致!!!") return password2
class RegisterForm(Form): """ 注册表单 """ def __init__(self, request, *args, **kwargs): self.request = request super(RegisterForm, self).__init__(*args, **kwargs) username = fields.CharField(min_length=2, max_length=16, error_messages={ 'required': '用户名不能为空', 'max_length': '用户名长度不能超过16位字符', 'min_length': '用户名长度不能小于2个字符', }) pwd = fields.RegexField( regex=r'^(?=.*[A-z])(?=.*\d)(?=.*[#@!~%^&*])[A-z\d#@!~%^&*]{8,16}$', min_length=8, max_length=16, error_messages={ 'required': '密码不能为空', 'invalid': '密码必须包含字母数字和特殊字符', 'min_length': '密码长度不能小于8个字符', 'max_length': '密码长度不能超过16个字符', }, # validators=[RegexValidator(r'^(?=.*[A-z])(?=.*\d)(?=.*[#@!~%^&*])[A-z\d#@!~%^&*]{8,16}$')] ) pwd2 = fields.CharField() email = fields.EmailField(error_messages={'invalid': '请输入正确的邮箱格式'}) check_code = fields.CharField(error_messages={'required': '验证码不能为空'}) def clean_check_code(self): if self.request.session.get('check_code').lower( ) != self.cleaned_data.get('check_code').lower(): raise ValidationError(code='invalid', message='验证码错误') return self.cleaned_data['check_code'] def clean_username(self): username = self.cleaned_data.get('username') obj = UserInfo.objects.filter(username=username).first() if obj: raise ValidationError(code='invalid', message='该用户名已注册') return self.cleaned_data['username'] def clean_email(self): email = self.cleaned_data.get('email') obj = UserInfo.objects.filter(email=email).first() if obj: raise ValidationError(code='invalid', message='该邮箱已注册') return self.cleaned_data['email'] def clean(self): value_dict = self.cleaned_data pwd = value_dict.get('pwd') pwd2 = value_dict.get('pwd2') if pwd != pwd2: raise ValidationError('两次密码不一致') return self.cleaned_data
class CreateUserForm(django_forms.Form): username = django_fields.CharField(label='账号', min_length=4, max_length=20, error_messages={ 'required': '用户名不能为空', 'min_length': '用户名长度不能小于4个字符', 'max_length': '用户名长度不能大于20个字符' }) password = django_fields.RegexField( '^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[!@#$\%\^\&\*\(\)])[0-9a-zA-Z!@#$\%\^\&\*\(\)]{3,32}$', label='请输入密码', min_length=3, max_length=32, error_messages={ 'requeird': '用户名不能为空', 'invalid': '密码必须包含数字,字母、特殊字符', 'min_length': "密码长度不能小于3个字符", 'max_length': "密码长度不能大于32个字符" }) passwordagain = django_fields.RegexField( '^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[!@#$\%\^\&\*\(\)])[0-9a-zA-Z!@#$\%\^\&\*\(\)]{3,32}$', label='请再次输入密码', min_length=3, max_length=32, error_messages={ 'requeird': '用户名不能为空', 'invalid': '密码必须包含数字,字母、特殊字符', 'min_length': "密码长度不能小于8个字符", 'max_length': "密码长度不能大于32个字符" }) mail = django_fields.EmailField(label='邮件', ) name = django_fields.CharField(label='用户名', ) def clean(self): clean_data = super(CreateUserForm, self).clean() username = clean_data.get('username') if User.objects.filter(username=username): raise ValidationError(message='账号已存在', code='invalid') password = clean_data.get("password") passwordagain = clean_data.get("passwordagain") if password != passwordagain: raise ValidationError(message='密码需要相同', code='invalid')
class EditUserForm(Form): """ 编辑用户表单 """ def __init__(self, request, *args, **kwargs): self.request = request super(EditUserForm, self).__init__(*args, **kwargs) id = fields.IntegerField() username = fields.CharField(min_length=2, max_length=16, error_messages={ 'required': '用户名不能为空', 'max_length': '用户名长度不能超过16位字符', 'min_length': '用户名长度不能小于2个字符', }) nickname = fields.CharField(max_length=32, min_length=2, error_messages={ 'required': '用户名不能为空', 'max_length': '用户名长度不能超过32位字符', 'min_length': '用户名长度不能小于2个字符', }) pwd = fields.RegexField( regex=r'^(?=.*[A-z])(?=.*\d)(?=.*[#@!~%^&*])[A-z\d#@!~%^&*]{8,16}$', min_length=8, max_length=16, error_messages={ 'required': '密码不能为空', 'invalid': '密码必须包含字母数字和特殊字符', 'min_length': '密码长度不能小于8个字符', 'max_length': '密码长度不能超过16个字符', }) email = fields.EmailField(error_messages={'invalid': '请输入正确的邮箱格式'}) def clean_username(self): username = self.cleaned_data.get('username') obj = UserInfo.objects.filter(username=username).first() if obj and obj.id != self.cleaned_data['id']: raise ValidationError(code='invalid', message='该用户名已注册') return self.cleaned_data['username'] def clean_nickname(self): nickname = self.cleaned_data.get('nickname') obj = UserInfo.objects.filter(nickname=nickname).first() if obj and obj.id != self.cleaned_data['id']: raise ValidationError(code='invalid', message='该昵称已注册') return self.cleaned_data['nickname'] def clean_email(self): email = self.cleaned_data.get('email') obj = UserInfo.objects.filter(email=email).first() if obj and obj.id != self.cleaned_data['id']: raise ValidationError(code='invalid', message='该邮箱已注册') return self.cleaned_data['email']
class InfoForm(Form): """完善信息Form""" """修改信息Form""" admin_name = fields.RegexField( regex=r'^[\u4E00-\u9FA5]{2,6}$', max_length=32, error_messages={ 'required': '姓名不能为空', 'invalid': '姓名格式有误!' }, widget=fields.TextInput(attrs={ 'class': 'form-control', 'placeholder': "请输入真实姓名(2-6个字)" })) admin_gender = fields.ChoiceField(choices=(('男', '男'), ('女', '女')), initial='男', widget=widgets.Select()) admin_email = fields.EmailField( max_length=32, error_messages={ 'required': '邮箱不能为空', 'invalid': '邮箱格式有误!' }, widget=fields.TextInput(attrs={ 'class': 'form-control', 'placeholder': "请输入邮箱" })) admin_phone = fields.RegexField( regex=r"^1[356789]\d{9}$", max_length=32, error_messages={ 'required': '手机号码不能为空', 'invalid': '手机号码格式有误!' }, widget=fields.TextInput(attrs={ 'class': 'form-control', 'placeholder': "请输入手机号码" }))
class RegisterForm(BaseForm, django_forms.Form): username = django_fields.CharField( min_length=6, max_length=20, required=True, error_messages={'required': '用户名不能为空.', 'min_length': "用户名长度不能小于6个字符", 'max_length': "用户名长度不能大于32个字符"} ) password = django_fields.RegexField( '^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[!@#$\%\^\&\*\(\)])[0-9a-zA-Z!@#$\%\^\&\*\(\)]{8,32}$', min_length=8, max_length=32, required=True, error_messages={'required': '密码不能为空.', 'invalid': '密码必须包含数字,字母、特殊字符', 'min_length': "密码长度不能小于8个字符", 'max_length': "密码长度不能大于32个字符"} ) confirm_password = django_fields.RegexField( '^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[!@#$\%\^\&\*\(\)])[0-9a-zA-Z!@#$\%\^\&\*\(\)]{8,32}$', min_length=8, max_length=32, required=True, error_messages={'required': '密码不能为空.', 'invalid': '密码必须包含数字,字母、特殊字符', 'min_length': "密码长度不能小于8个字符", 'max_length': "密码长度不能大于32个字符"} ) def clean_username(self): post_username = self.cleaned_data['username'] if models.UserInfo.objects.filter(username=post_username).exists(): raise ValidationError('用户已注册') return post_username def clean(self): v1 = self.cleaned_data.get('password') v2 = self.cleaned_data.get('confirm_password') if v1 == v2: return self.cleaned_data else: raise ValidationError('密码输入不一致')
class RegisterForm(BaseForm, Form): USER_REG = r'[a-zA-Z0-9]{6,18}' EMAIL_REG = r"^[_a-z0-9-]+(\.[_a-z0-9-]+)*@([a-z0-9-]+\.)+(com|net|cn|org|me|cc|biz)$" PWD_REG = r'^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[~!@#$%^&*?+\-\/=_])[0-9a-zA-Z~!@#$%^&*?+\-\/=_]{8,32}$' user = fields.RegexField(USER_REG, error_messages={'invalid': '用户名6~18个字符'}) email = fields.RegexField(EMAIL_REG, error_messages={'invalid': '邮箱格式不正确'}) pwd = fields.RegexField(PWD_REG, error_messages={'invalid': '8~32个字符,须含数字,字母,特殊字符'}) confirm_pwd = fields.CharField(required=True, error_messages={'required': '确认密码不能为空'}) check_code = fields.CharField(required=True, error_messages={'required': '验证码不能为空'}) def clean_user(self): data = self.cleaned_data.get("user") if User.objects.filter(name=data).count(): raise ValidationError("该用户名已被注册") else: return data def clean_email(self): data = self.cleaned_data.get("email") if User.objects.filter(email=data).count(): raise ValidationError("该邮箱已被注册") else: return data def clean_check_code(self): data = self.cleaned_data.get("check_code", '').upper() code = self.request.session.get("check_code", '') # session本来就保存的是upper数据 if code != data: raise ValidationError("验证码错误") else: return data def clean(self): data = self.cleaned_data pwd = data.get('pwd', False) # 如果前面密码都没有验证通过,那么clean_data中就没有pwd键值对,此时也不要要验证密码是否一致 if (not pwd) or pwd == data.get('confirm_pwd'): return data else: raise ValidationError('两次输入密码不一致')
class RegisterForm(BaseForm, django_forms.Form): username = django_fields.CharField(min_length=6, max_length=20, error_messages={ 'required': '用户名不能为空.', 'min_length': "用户名长度不能小于6个字符", 'max_length': "用户名长度不能大于32个字符" }) password = django_fields.RegexField( '^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[!@#$\%\^\&\*\(\)])[0-9a-zA-Z!@#$\%\^\&\*\(\)]{8,32}$', min_length=8, max_length=32, error_messages={ 'required': '密码不能为空.', 'invalid': '密码必须包含数字,字母、特殊字符', 'min_length': "密码长度不能小于8个字符", 'max_length': "密码长度不能大于32个字符" }) cpassword = django_fields.RegexField( '^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[!@#$\%\^\&\*\(\)])[0-9a-zA-Z!@#$\%\^\&\*\(\)]{8,32}$', min_length=8, max_length=32, error_messages={ 'required': '输入为空!.', 'invalid': '密码必须包含数字,字母、特殊字符', 'min_length': "密码长度不能小于8个字符", 'max_length': "密码长度不能大于32个字符" }) email = django_fields.EmailField(error_messages={ 'invalid': '邮箱格式错误', 'required': '邮箱不能为空' }) def clean_check_code(self): if self.request.POST.get('password') != self.request.POST.get( 'cpassword'): raise ValidationError('两次密码不一致')
class TransferInForm(Form): """党员转入Form""" username = fields.CharField( min_length=6, max_length=13, error_messages={ 'required': '用户名不能为空', 'invalid': '用户名格式有误,请重新输入' }, widget=forms.TextInput(attrs={ 'class': 'form-control', 'placeholder': "请输入用户名(6-13位)" })) member_name = fields.RegexField( regex=r'^[\u4E00-\u9FA5]{2,6}$', max_length=32, error_messages={ 'required': '姓名不能为空', 'invalid': '姓名格式有误,请重新输入' }, widget=fields.TextInput(attrs={ 'class': 'form-control', 'placeholder': "请输入姓名(2-6个汉字)" })) member_gender = fields.ChoiceField(choices=(('男', '男'), ('女', '女')), initial='男', widget=widgets.Select()) member_status = fields.ChoiceField(choices=(('正式党员', '正式党员'), ('预备党员', '预备党员')), initial='正式党员', widget=widgets.Select()) in_date = forms.DateField(error_messages={'required': '转入日期不能为空'}, widget=forms.TextInput(attrs={ 'class': 'form-control', 'type': 'date' })) come_from_party = fields.CharField( max_length=256, error_messages={'required': '转自组织内容不能为空'}, widget=forms.TextInput(attrs={ 'class': 'form-control', 'placeholder': "请输入转自什么组织" }))
class LoginForm(BaseForm, Form): USER_REG = r'[a-zA-Z0-9]{6,18}' PWD_REG = r'^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[~!@#$%^&*?+\-\/=_])[0-9a-zA-Z~!@#$%^&*?+\-\/=_]{8,32}$' user = fields.RegexField(USER_REG, error_messages={'invalid': '用户名6~18个字符'}) pwd = fields.RegexField(PWD_REG, error_messages={'invalid': '8~32个字符,须含数字,字母,特殊字符'}) check_code = fields.CharField(required=True, error_messages={'required': '验证码不能为空'}) def clean_check_code(self): data = self.cleaned_data.get("check_code", '').upper() code = self.request.session.get("check_code", '') # session本来就保存的是upper数据 if code != data: raise ValidationError("验证码错误") else: return data def clean(self): data = self.cleaned_data name = data.get("user") pwd = data.get("pwd") u = User.objects.filter(name=name).first() if u and bcrypt.checkpw(pwd.encode(encoding='utf-8'), u.pwd.encode(encoding='utf-8')): # 用户存在且密码 验证通过 return data else: raise ValidationError("用户名或密码错误")
class LoginForm(BaseForm, forms.Form): username = fields.CharField(error_messages={ 'required': '用户名不能为空', }) password = fields.RegexField( '^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[!@#$\%\^\&\*\(\)])[0-9a-zA-Z!@#$\%\^\&\*\(\)]{8,32}$', min_length=8, max_length=32, error_messages={ 'required': '密码不能为空', 'min_length': '密码不能小于8个字符', 'max_length': '密码不能大于32个字符', 'invalid': '密码必须包含字母,数字和特殊字符', }) rmb = fields.IntegerField(required=False) check_code = fields.CharField(error_messages={ 'required': '验证码不能为空', }) def clean_check_code(self): if self.request.session.get('CheckCode').upper( ) != self.cleaned_data.get('check_code').upper(): raise ValidationError(message='验证码错误') def clean_rmb(self): if self.cleaned_data.get('rmb', None): # print(111,self.cleaned_data.get('rmb', None)) self.rmb = True def clean(self): username = self.cleaned_data.get('username') password = self.cleaned_data.get('password') userinfo = models.UserInfo.objects.filter(username=username, password=password).values( 'uid', 'nickname', 'username', 'email', 'avatar', 'blog__bid', 'blog__site').first() if not userinfo: raise ValidationError(message='用户名或密码错误') self.userinfo = userinfo return self.cleaned_data
class Information(ModelForm): nickname = fields.CharField( max_length=16, min_length=1, error_messages={ 'required': '昵称不能为空', "invalid": '不能包含非法字符' }, widget=widgets.TextInput(attrs={ 'class': 'form-control', 'aria-describedby': 'basic-addon1' })) email = fields.EmailField( max_length=32, min_length=8, error_messages={ 'required': '邮箱不能为空', "invalid": '请输入正确邮箱' }, widget=widgets.EmailInput(attrs={ 'class': 'form-control', 'aria-describedby': 'basic-addon1' })) phone = fields.RegexField( '^1\d{10}', error_messages={ 'required': '手机不能为空', "invalid": '请输入正确手机号' }, widget=widgets.TextInput(attrs={ 'class': 'form-control', 'aria-describedby': 'basic-addon1' })) avatar = fields.ImageField(widget=widgets.FileInput( attrs={ 'style': "width:200px;height:200px;opacity:0;position:absolute;top:0" })) class Meta: model = UserInfo fields = ['avatar']
class EditPhoneForm(forms.Form): password = fields.CharField(error_messages={ 'required': '该字段不能为空', }) phone = fields.RegexField('^[1][358][0-9]{9}$', required=True, error_messages={ 'required': '该字段不能为空', 'invalid': '请输入正确的手机号码' }) verify_code = fields.IntegerField(max_value=9999, min_value=0000, error_messages={ 'invalid': '验证码输入有误', 'required': '请输入验证码', 'max_value': '验证码输入有误', 'min_value': '验证码输入有误', })
class BlogForm(forms.Form): title = fields.CharField(min_length=6, max_length=64, error_messages={ 'required': '博客标题不能为空', 'min_length': '用户名长度不小于6字符', 'max_length': '用户名长度不大于32字符' }) site = fields.RegexField(regex=r'^\w+$', min_length=4, max_length=32, error_messages={ 'required': '博客后缀名不能为空', 'min_length': '博客后缀名长度不小于6字符', 'max_length': '博客后缀名长度不大于32字符', 'invalid': '博客后缀名必须由数字、字母、_,组成', })
class RegisterForm_1(Form): username =fields.CharField( required=True, min_length=3, max_length=15, error_messages ={ "required":"用户名不能为空", "min_length":"用户名小于最小长度", "max_length":"用户名大于最大长度" } ) password =fields.CharField( required=True, min_length=3, max_length=30, error_messages ={ "required":"密码不能为空", "min_length":"密码小于最小长度", "max_length":"密码大于最大长度" } ) password_again =fields.CharField( required=True, min_length=3, max_length=30, error_messages ={ "required":"密码前后不一致", "min_length":"密码前后不一致", "max_length":"密码前后不一致", } ) email =fields.EmailField( error_messages={ "invalid":"email格式不正确" } ) phone =fields.RegexField( '138\d+', error_messages={ "invalid":"手机号格式不正确" } )
class AddMemberForm(Form): """添加成员Form""" username = fields.CharField( min_length=6, max_length=13, error_messages={ 'required': '用户名不能为空!', 'invalid': '用户名格式有误!' }, widget=forms.TextInput(attrs={ 'class': 'form-control', 'placeholder': "请输入用户名(6-13位)" })) add_name = fields.RegexField( regex=r'^[\u4E00-\u9FA5]{2,6}$', max_length=32, error_messages={ 'required': '姓名不能为空!', 'invalid': '姓名格式有误!' }, widget=fields.TextInput(attrs={ 'class': 'form-control', 'placeholder': "请输入姓名(2-6个汉字)" })) add_gender = fields.ChoiceField(choices=(('男', '男'), ('女', '女')), initial='男', widget=widgets.Select()) add_status = fields.ChoiceField(choices=(('正式党员', '正式党员'), ('预备党员', '预备党员'), ('积极分子', '积极分子')), initial='正式党员', widget=widgets.Select())
class DetailedForm(forms.Form): """ required:是否必填 error_messages:錯誤提示(要透過{{ obj.errors.user.0 }}調用) widget:訂製html插件(重要) label:訂製標籤名(要透過{{ obj.user.label }}調用) initial:默認值 validators:自訂製驗證規則 disabled:是否禁止編輯 """ user = fields.CharField( required=True, max_length=12, # 最大長度 min_length=3, # 最小長度 error_messages={}, widget=widgets.TextInput(attrs={'n': 123}), # 參數為自定義屬性 label="用戶名", initial='請輸入用戶名', disabled=True, ) age = fields.IntegerField( label="年齡", max_value=1000, # 最大值 min_value=0, # 最小值 error_messages={ 'max_value': '太大了', }) email = fields.EmailField(label="信箱", ) smath = fields.DecimalField() # 小數 file = fields.FileField() city = fields.ChoiceField( choices=[(1, "上海"), (2, "北京"), (3, "南京")], # (value, 顯示文字) initial=3, # 默認value=3 ) hobby = fields.MultipleChoiceField( choices=[(1, "籃球"), (2, "電動"), (3, "小說")], # (value, 顯示文字) initial=[1, 2], ) # date = fields.DateField() # 格式:2015-09-01 # datetime = fields.DateTimeField() # 格式:2015-09-01 11:12 radio = fields.ChoiceField( choices=[(1, 'man'), (2, 'woman')], widget=widgets.RadioSelect(), ) check = fields.MultipleChoiceField( choices=[(1, 'man'), (2, 'woman')], widget=widgets.CheckboxSelectMultiple(), ) from django.core.validators import RegexValidator my = fields.CharField( # 自定義正則一 # validators可設置多個RegexValidator # RegexValidator(正則, 錯誤信息) validators=[ RegexValidator(r"^[0-9]+$", "請輸入數字"), RegexValidator(r"^87[0-9]+$", "請以87開頭") ], ) # 自定義正則二 # fields.RegexField(正則),只可設置單個正則 my2 = fields.RegexField(r"^[0-9]+$", error_messages={ "invalid": "請輸入數字", })