def __init__(self, *args, **kwargs): super(RegisterForm, self).__init__(*args, **kwargs) self.fields['username'].widget = widgets.TextInput( attrs={'placeholder': "用户名"}) self.fields['email'].widget = widgets.EmailInput( attrs={'placeholder': "邮箱"}) self.fields['password1'].widget = widgets.PasswordInput( attrs={'placeholder': "密码"}) self.fields['password2'].widget = widgets.PasswordInput( attrs={'placeholder': "确认密码"})
class UserForm(forms.Form): """ max_length,label,widget ,error_messages user,pwd,re_pwd,email """ user = forms.CharField( max_length=32, label="用户名", error_messages={'required': "该字段不能为空"}, widget=widgets.TextInput(attrs={"class": "form-control"})) pwd = forms.CharField( max_length=32, label="密码", widget=widgets.PasswordInput(attrs={"class": "form-control"})) re_pwd = forms.CharField( max_length=32, label="确认密码", widget=widgets.PasswordInput(attrs={"class": "form-control"})) email = forms.EmailField( max_length=32, label="邮箱", widget=widgets.EmailInput(attrs={"class": "form-control"})) def clean_user(self): """ 获取表单中传过来的user 用户不存在直接换回 用户存在则直接抛出异常用户已经被注册 """ val = self.cleaned_data.get("user") user = UserInfo.objects.filter(username=val).first() if not user: return val else: raise ValidationError("该用户已经注册") def clean(self): """ 校验两次输入的密码是否一致 判断两次输入的密码是否都存在 都存在: 相等:返回self.clean_data 不相等:抛出validationError的错误 不都存在: 返回通过校验的数据 """ pwd = self.cleaned_data.get("pwd") re_pwd = self.cleaned_data.get("re_pwd") if pwd and re_pwd: if pwd == re_pwd: return self.cleaned_data else: raise ValidationError("密码不一致") else: return self.cleaned_data
class UserForm(forms.Form): username = forms.CharField( max_length=18, min_length=3, label='用户名', widget=widgets.TextInput(attrs={'class': 'form-control'}), error_messages={ 'max_length': '最长18位', 'min_length': '最短3位', 'required': '该字段必填' }) password = forms.CharField( max_length=18, min_length=3, label='密码', widget=widgets.PasswordInput(attrs={'class': 'form-control'}), error_messages={ 'max_length': '最长18位', 'min_length': '最短3位', 'required': '该字段必填' }) re_password = forms.CharField( max_length=18, min_length=3, label='确认密码', widget=widgets.PasswordInput(attrs={'class': 'form-control'}), error_messages={ 'max_length': '最长18位', 'min_length': '最短3位', 'required': '该字段必填' }) email = forms.EmailField( label='邮箱', widget=widgets.EmailInput(attrs={'class': 'form-control'}), error_messages={ 'required': '该字段必填', 'invalid': '格式不正确' }) phone = forms.CharField( max_length=18, min_length=3, label='手机号', widget=widgets.TextInput(attrs={'class': 'form-control'}), error_messages={ 'max_length': '最长18位', 'min_length': '最短3位', 'required': '该字段必填' }) def clean(self): password = self.cleaned_data.get('password') re_password = self.cleaned_data.get('re_password') if password != re_password: self.add_error('re_password', '两次密码不一致') return self.cleaned_data
class RegisterForm(forms.Form): username = fields.CharField( max_length=16, min_length=3, required=True, label='Username', widget=widgets.TextInput( attrs={ 'class': 'form-control', 'placeholder': 'Enter username', 'onchange': 'checkUsername(this);' }), error_messages={ 'required': '用户名不能为空', }, help_text='Username can just contains integer or letter or _') password = fields.CharField( required=True, max_length=32, label='Password', widget=widgets.PasswordInput(attrs={ 'class': 'form-control', 'placeholder': 'Enter password' })) email = fields.EmailField( required=True, label='Email', widget=widgets.EmailInput(attrs={ 'class': 'form-control', 'placeholder': 'Enter email' }), help_text="We'll never share your email with anyone else.") image = fields.ImageField(required=False, allow_empty_file=True, label='Avatar', widget=widgets.FileInput(attrs={ 'class': 'custom-file-input', 'id': 'customFile' })) captcha = fields.CharField( required=True, label='Captcha', widget=widgets.Input(attrs={ 'class': 'form-control', 'placeholder': 'Enter captcha' }), help_text='Click the captcha to change another.') def clean_username(self): username = self.cleaned_data['username'] if User.objects.filter(username=username): raise forms.ValidationError('username already existed') return username
class Meta: model = User exclude = [ 'id', 'password', 'last_login', 'is_superuser', 'is_active', 'is_staff', 'date_joined', 'user_permissions', 'groups', 'username' ] widgets = { 'first_name': widgets.TextInput(attrs={'class': 'form-control'}), 'last_name': widgets.TextInput(attrs={'class': 'form-control'}), 'email': widgets.EmailInput(attrs={'class': 'form-control'}) }
class Meta: model = User fields = ['username', 'email', 'password1', 'password2'] widgets = { 'username': widgets.TextInput(attrs={'class': 'form-control'}), 'email': widgets.EmailInput(attrs={'class': 'form-control'}), 'password1': widgets.PasswordInput(attrs={'class': 'form-control'}), 'password2': widgets.PasswordInput(attrs={'class': 'form-control'}, ), }
class Meta: model = models.UserInfo fields = "__all__" error_messages = { "name":{"required":"字段不能为空"} } widgets = { "name":widgets.TextInput(attrs={"class":"form-control"}), "email":widgets.EmailInput(attrs={"class":"form-control"}), "ut":widgets.Select(attrs={"class":"form-control"}), }
class ShipmentForm(forms.Form): firstname = forms.CharField(widget=widgets.TextInput(attrs={'placeholder': 'Nom', 'class': 'form-control'})) lastname = forms.CharField(widget=widgets.TextInput(attrs={'placeholder': 'Prénom', 'class': 'form-control'})) email = forms.EmailField(widget=widgets.EmailInput(attrs={'placeholder': 'Email', 'class': 'form-control'})) telephone = forms.CharField(widget=widgets.TextInput(attrs={'placeholder': 'Téléphone', 'class': 'form-control'})) address = forms.CharField(widget=widgets.TextInput(attrs={'placeholder': 'Addresse', 'class': 'form-control'})) COUNTRIES = [('france', 'France'), ('belgique', 'Belgique')] country = forms.CharField(widget=widgets.Select(choices=COUNTRIES, attrs={'placeholder': 'Addresse', 'class': 'custom-select d-block w-100'})) zip_code = forms.CharField(widget=widgets.TextInput(attrs={'class': 'form-control'}))
class ContactForm(forms.Form): email = fields.EmailField(widget=widgets.EmailInput(attrs=ATTRS)) conditions = fields.BooleanField(widget=widgets.CheckboxInput( attrs=ATTRS.update({'class': ''}))) message = fields.CharField(widget=widgets.Textarea(attrs=ATTRS)) def clean_message(self): message = self.cleaned_data['message'] if len(message) > 300: raise forms.ValidationError("Le messsage est trop long") super().clean()
def __init__(self, *args, **kwargs): super(RegisterForm, self).__init__(*args, **kwargs) self.fields['username'].widget = widgets.TextInput(attrs={'placeholder': "用户名", "class": "form-control"}) self.fields['email'].widget = widgets.EmailInput(attrs={'placeholder': "邮箱", "class": "form-control"}) # self.fields['password1'].widget = widgets.PasswordInput( # attrs={'placeholder': "请输入密码", "class": "form-control"}) # self.fields['password2'].widget = widgets.PasswordInput( # attrs={'placeholder': "请再次输入密码", "class": "form-control"}) self.fields['home_address'].widget = widgets.TextInput(attrs={'placeholder': "家庭地址", "class": "form-control"}) self.fields['home_address'].widget = widgets.TextInput(attrs={'placeholder': "家庭地址", "class": "form-control"})
class RegForm(forms.Form): user = forms.CharField( min_length=4, max_length=8, widget=widgets.TextInput(attrs={"class": "form-control"}), error_messages={ "min_length": "输入过短,最少4个字符", "max_length": "输入过长,最多4个字符", "required": "必填" }) pwd = forms.CharField( min_length=5, widget=widgets.PasswordInput(attrs={"class": "form-control"}), error_messages={ "min_length": "输入过短,最少5个字符", "required": "必填" }) repeat_pwd = forms.CharField( min_length=5, widget=widgets.PasswordInput(attrs={"class": "form-control"}), error_messages={ "min_length": "输入过短,最少5个字符", "required": "必填" }) email = forms.EmailField( min_length=5, widget=widgets.EmailInput(attrs={"class": "form-control"}), error_messages={ "min_length": "输入过短,最少5个字符", "required": "必填" }) #钩子函数 def clean_user(self): val = self.cleaned_data.get("user") import re # if not UserInfo.objects.filter(username=val): # return val # else: # raise ValidationError("") if not val.isdigit(): return val else: raise ValidationError("用户名不能是纯数字!") def clean_pwd(self): val = self.cleaned_data.get("pwd") if not val.isdigit(): return val else: raise ValidationError("密码不能是纯数字!")
class RegisterForm(forms.Form): name = forms.CharField( max_length=12, min_length=4, required=True, error_messages={'required': '用户名不能为空', 'invalid': '格式不对'}, widget=widgets.TextInput(attrs={'class': 'form-control loon luser', 'placeholder': '用户名'}) ) password = forms.CharField( required=True, max_length=32, min_length=6, error_messages={'required': '密码不能为空', 'invalid':'密码格式不对'}, widget=widgets.PasswordInput(attrs={'class': 'form-control loon lpass', 'placeholder': '密码在六位以上'}) ) password_confum = forms.CharField( required=True, max_length=32, min_length=6, error_messages={'required': '密码不能为空', 'invalid':'密码格式不对'}, widget=widgets.PasswordInput(attrs={'class': 'form-control loon lpass', 'placeholder': '输入再次密码'}) ) email = forms.EmailField( widget=widgets.EmailInput(attrs={'class':' form-control loon lpass', 'placeholder': '邮箱'}) ) def clean(self): cleaned_data = self.cleaned_data username = self.cleaned_data['name'] pwd = self.cleaned_data['password'] re_pwd = self.cleaned_data['password_confum'] email1 = self.cleaned_data['email'] if pwd != re_pwd: raise forms.ValidationError('两次输入的密码不匹配') user = User.objects.filter(username = username) if user: raise forms.ValidationError('这个用户名已经被注册了') em = User.objects.filter(email=email1) if em: raise forms.ValidationError('该邮箱已经注册了, 登录?') return cleaned_data
class MyForm(forms.Form): username = forms.CharField( max_length=8, min_length=3, label='用户名', error_messages={ 'required': '用户名不能为空', 'max_length': '用户名最大8位', 'min_length': '用户名最小3位' }, widget=widgets.TextInput(attrs={'class': 'form-control'})) password = forms.CharField( max_length=8, min_length=3, label='密码', error_messages={ 'required': '密码不能为空', 'max_length': '密码最大8位', 'min_length': '密码最小3位' }, widget=widgets.PasswordInput(attrs={'class': 'form-control'})) confirm_password = forms.CharField( max_length=8, min_length=3, label='确认密码', error_messages={ 'required': '确认密码不能为空', 'max_length': '确认密码最大8位', 'min_length': '确认密码最小3位' }, widget=widgets.PasswordInput(attrs={'class': 'form-control'})) email = forms.EmailField( label='邮箱', error_messages={ 'required': '邮箱不能为空', 'invalid': '邮箱格式不正确', }, widget=widgets.EmailInput(attrs={'class': 'form-control'})) # 局部钩子校验用户名是否存在 def clean_username(self): username = self.cleaned_data.get('username') user_obj = models.UserInfo.objects.filter(username=username).first() if user_obj: self.add_error('username', '用户名已存在') return username # 全局钩子,校验密码是否一致 def clean(self): password = self.cleaned_data.get('password') confirm_password = self.cleaned_data.get('confirm_password') if not password == confirm_password: self.add_error('confirm_password', '两次密码不一致') return self.cleaned_data
class Meta: model = Profile exclude = ['id', 'user'] widgets = { 'favorite_product': widgets.Select(attrs={'class': 'form-control'}), 'profile_image': widgets.TextInput(attrs={'class': 'form-control'}), 'name': widgets.TextInput(attrs={'class': 'form-control'}), 'email': widgets.EmailInput(attrs={'class': 'form-control'}), }
class Meta: model = User fields = ('username', 'last_name', 'first_name', 'email', 'password1', 'password2') widgets = { 'email': widgets.EmailInput(attrs={ 'class': 'inputs', 'placeholder': 'Email' }), }
def __init__(self, *args, **kwargs): super(RegisterForm, self).__init__(*args, **kwargs) self.fields['username'].widget = widgets.TextInput( attrs={'placeholder': "username", "class": "form-control"}) self.fields['email'].widget = widgets.EmailInput( attrs={'placeholder': "email", "class": "form-control"}) self.fields['password1'].widget = widgets.PasswordInput( attrs={'placeholder': "password", "class": "form-control"}) self.fields['password2'].widget = widgets.PasswordInput( attrs={'placeholder': "repeat password", "class": "form-control"})
def __init__(self, *args, **kwargs): super(RegisterForm, self).__init__(*args, **kwargs) self.fields['username'].widget = widgets.TextInput( attrs={"class": "input100"}) self.fields['email'].widget = widgets.EmailInput( attrs={"class": "input100"}) self.fields['password1'].widget = widgets.PasswordInput( attrs={"class": "input100"}) self.fields['password2'].widget = widgets.PasswordInput( attrs={"class": "input100"})
class UserForm(forms.Form): # 定义变量,专门给text类型的输入框添加class wid = widgets.TextInput(attrs={'class': 'form-control'}) # 定义几种通用的类型返回 error_hints = {'required': '该字段不能为空', 'invalid': '格式错误'} # 字段定义如下: name = forms.CharField(max_length=12, min_length=4, label='姓名', widget=wid, error_messages=error_hints) pwd = forms.CharField( label='密码', widget=widgets.PasswordInput(attrs={'class': 'form-control'}), error_messages=error_hints) r_pwd = forms.CharField( label='确认密码', widget=widgets.PasswordInput(attrs={'class': 'form-control'}), error_messages=error_hints) age = forms.IntegerField(label='年龄', widget=wid, error_messages=error_hints) email = forms.EmailField( label='邮箱', widget=widgets.EmailInput(attrs={'class': 'form-control'}), error_messages=error_hints) tel = forms.CharField(label='手机', widget=wid, error_messages=error_hints, max_length=11) def clean_name(self): name = self.cleaned_data.get('name') if not name.isdigit(): return name else: raise ValidationError('用户名不能纯数字') def clean_tel(self): var = self.cleaned_data.get('tel') if len(var) == 11: return var else: raise ValidationError('手机账号必须为11位') def clean(self): pwd = self.cleaned_data.get('pwd') r_pwd = self.cleaned_data.get('r_pwd') # 正常逻辑是不用在全局钩子进行判断为空相等的 因为最后才会掉入全局钩子的判断 if pwd and r_pwd and pwd != r_pwd: raise ValidationError('两次密码不一致') else: # 必须存在该行代码 return self.cleaned_data
class Register(Form): username = fields.CharField( label='username', widget=widgets.TextInput(attrs={'placeholder': '请输入用户名'})) email = fields.CharField( label='email', widget=widgets.EmailInput(attrs={'placeholder': '请输入邮箱'})) password = fields.CharField( min_length=6, label='password', widget=widgets.PasswordInput(attrs={'placeholder': '请输入密码'}))
class CheckResetForm(PasswordResetForm): """ Classe do formulário para verificar redifinição de senha por email """ # Classe de Metadados class Meta: fields = ['email'] parsley_extras = { 'email': { 'remote': reverse_lazy('parsley-verificar-email'), 'remote-message': "O Email digitado não está cadastrado no sistema." }, } def __init__(self, *args, **kwargs): """ Metódo de inicialização do Form """ super(CheckResetForm, self).__init__(*args, **kwargs) # Adicionar a classe CSS 'form-control' para todos os campos do formulário for field in self.fields: self.fields[field].widget.attrs['class'] = 'form-control' form_name = 'reset-form' scope_prefix = 'dados_reset' # Adicionar a classe CSS 'djng-field-required' para campos obrigatórios required_css_class = 'field-required' # Email email = forms.EmailField( label='Email', max_length=50, min_length=3, required=True, widget=widgets.EmailInput( attrs={ 'data-parsley-trigger': "focusin focusout", 'data-parsley-remote-options': '{ "type": "POST", "dataType": "json" }', 'placeholder': "*****@*****.**", }), error_messages={ 'min_length': "Email inválido.", 'invalid': "Email inválido.", }) initial = { 'email': '', }
class ResendActivationEmailForm(forms.Form): email = forms.EmailField( widget=widgets.EmailInput(attrs={"placeholder": "Email"}), label="") def clean_email(self): data = self.cleaned_data["email"] if not User.objects.filter(email=data).exists(): raise ValidationError("No account with this email exists.") user: User = User.objects.get(email=data) if user.is_active: raise ValidationError("This account has already been activated.") return data
class EmailForm(forms.Form): email = forms.EmailField(max_length=32, required=True, error_messages={ 'required': '邮箱不能为空', 'max_length': '长度超过32位' }, widget=widgets.EmailInput(attrs={ 'class': 'form-control', 'placeholder': 'Email' }))
class UserProfileForm(Form): name = fields.CharField( label="姓名", widget=widgets.TextInput(attrs={"class": "form-control"}), required=True ) email = fields.EmailField( label="邮箱", widget=widgets.EmailInput(attrs={"class": "form-control"}), required=True, error_messages={"invalid": "邮箱格式不正确!"} ) phone = fields.IntegerField( label="座机", widget=widgets.NumberInput(attrs={"class": "form-control"}), required=True, error_messages={"invalid": "必须全为数字!"} ) mobile = fields.IntegerField( label="手机", widget=widgets.NumberInput(attrs={"class": "form-control"}), required=True, error_messages={"invalid": "必须全为数字!"} ) username = fields.CharField( label="用户名", widget=widgets.Input(attrs={"class": "form-control"}), required=True ) password = fields.CharField( label="密码", widget=widgets.PasswordInput(attrs={"class": "form-control"}), required=True ) password_again = fields.CharField( label="确认密码", widget=widgets.PasswordInput(attrs={"class": "form-control"}), required=True ) def clean_password_again(self): password = self.cleaned_data.get("password") password_again = self.cleaned_data.get("password_again") if password != password_again: self.add_error("password_again", "两次密码不一致") else: return password_again
class TeacherForm(Form): username = fields.CharField( required=True, max_length=10, error_messages={ "required": "老师名称不能空", "max_length": "老师名称长度不能大于10" }, widget=widgets.TextInput(attrs={ "placeholder": "老师名称", "class": "form-control" })) password = fields.CharField( required=True, min_length=6, error_messages={ "required": "密码不能为空", "min_length": "密码长度不能小于6" }, widget=widgets.TextInput(attrs={ "placeholder": "密码", "class": "form-control" })) email = fields.EmailField(required=True, error_messages={ "required": "邮箱不能为空", "invalid": "邮箱格式不正确" }, widget=widgets.EmailInput(attrs={ "placeholder": "邮箱", "class": "form-control" })) sex = fields.ChoiceField(choices=[("m", '男'), ("f", '女')]) age = fields.IntegerField(required=True, error_messages={"required": "年龄不能为空"}, widget=widgets.TextInput(attrs={ "placeholder": "年龄", "class": "form-control" })) teacher_to_cls_id = fields.MultipleChoiceField(choices=[]) # def __init__(self,*args,**kwargs): # super().__init__(self,*args,**kwargs) # self.fields["teacher_to_cls_id"].choices=models.ClassList.objects.all().values_list("id","caption") def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields[ "teacher_to_cls_id"].choices = models.ClassList.objects.all( ).values_list("id", "caption")
class UserForm(forms.Form): name = forms.CharField( min_length=4, max_length=12, label="姓名", widget=widgets.TextInput(attrs={"class": "form-control"}), error_messages={"required": "该字段不能为空"}) age = forms.IntegerField( label="年龄", error_messages={"invalid": "格式错误"}, widget=widgets.TextInput(attrs={"class": "form-control"})) telephone = forms.CharField( label="电话号码", widget=widgets.TextInput(attrs={"class": "form-control"})) email = forms.EmailField( label="邮箱", widget=widgets.EmailInput(attrs={"class": "form-control"})) pwd = forms.CharField( min_length=6, label="密码", widget=widgets.PasswordInput(attrs={"class": "form-control"})) r_pwd = forms.CharField( label="确认密码", widget=widgets.PasswordInput(attrs={"class": "form-control"})) def clean_name(self): val = self.cleaned_data.get("name") if not val.isdigit(): return val else: raise ValidationError('用户名不能是纯数字') def clean_telephone(self): val = self.cleaned_data.get("telephone") if len(val) == 11: return val else: raise ValidationError("手机号码错了") def clean_age(self): val = self.cleaned_data.get("age") if int(val) > 18: return val else: raise ValidationError("岁数太小的") def clean(self): pwd = self.cleaned_data.get('pwd') r_pwd = self.cleaned_data.get("r_pwd") if pwd and r_pwd and pwd != r_pwd: raise ValidationError("两次密码不一致") else: return self.cleaned_data
def __init__(self, *args, **kwargs): super(RegisterForm, self).__init__(*args, **kwargs) self.fields['username'].widget = widgets.TextInput( attrs={'placeholder': '请输入用户名'}) self.fields['email'].widget = widgets.EmailInput( attrs={'placeholder': '请输入邮箱地址'}) self.fields['password1'].widget = widgets.PasswordInput( attrs={'placeholder': '请输入密码'}) self.fields['password2'].widget = widgets.PasswordInput( attrs={'placeholder': '请确认密码'}) self.fields['captcha'].widget = CaptchaTextInput( attrs={'placeholder': '请输入验证码'})
class BindEmailForm(Form): email = fields.EmailField( label='邮箱', widget=widgets.EmailInput(attrs={ 'class': 'form-control', 'placeholder': '请输入正确的邮箱' })) verification_code = fields.CharField( label='验证码', required=False, widget=widgets.TextInput(attrs={ 'class': 'form-control', 'placeholder': '点击"发送验证码"发送到邮箱' })) def __init__(self, *args, **kwargs): if 'request' in kwargs: self.request = kwargs.pop('request') super(BindEmailForm, self).__init__(*args, **kwargs) def clean(self): # 判断用户是否登录 if self.request.user.is_authenticated: self.cleaned_data['user'] = self.request.user else: raise ValidationError('用户尚未登录') # 判断用户是否已绑定邮箱 if self.request.user.email != '': raise ValidationError('你已经绑定邮箱') # 判断验证码 code = self.request.session.get('bind_email_code', '') verification_code = self.cleaned_data.get('verification_code', '') if not (code != '' and code == verification_code): raise ValidationError('验证码不正确') return self.cleaned_data def clean_email(self): email = self.cleaned_data['email'] if User.objects.filter(email=email).exists(): raise ValidationError('该邮箱已经被绑定') return email def clean_verification_code(self): verification_code = self.cleaned_data.get('verification_code', '').strip() if verification_code == '': raise ValidationError('验证码不能为空') return verification_code
class UserForm(forms.Form): user = forms.CharField( max_length=32, error_messages={"required": "请输入昵称"}, label="昵 称", widget=widgets.TextInput(attrs={"class": "form-control"}, ) # 自定义格式 ) pwd = forms.CharField( max_length=32, error_messages={"required": "密码不能为空"}, label="密 码", widget=widgets.PasswordInput(attrs={"class": "form-control"}, ) # 自定义格式 ) re_pwd = forms.CharField( max_length=32, error_messages={"required": "请确认密码"}, label="确 认", widget=widgets.PasswordInput(attrs={"class": "form-control"}, ) # 自定义格式 ) email = forms.EmailField( max_length=32, error_messages={"required": "请输入邮箱"}, label="邮 箱", widget=widgets.EmailInput(attrs={"class": "form-control"}, ) # 自定义格式 ) def clean_user(self): val = self.cleaned_data.get("user") user = UserInfo.objects.filter(username=val).first() if not user: return val else: raise ValidationError("该用户已注册!") def clean(self): pwd = self.cleaned_data.get("pwd") re_pwd = self.cleaned_data.get("re_pwd") if pwd and re_pwd: if pwd == re_pwd: return self.cleaned_data else: raise ValidationError("两次密码不一致!") else: return self.cleaned_data
class RegisterForm(forms.Form): def __init__(self, request, *args, **kwargs): self.request = request super(RegisterForm, self).__init__(*args, **kwargs) username = fields.CharField( widget=widgets.TextInput(attrs={ "class": "form-control", "placeholder": "用戶名" }), min_length=3, ) nickname = fields.CharField(widget=widgets.TextInput(attrs={ "class": "form-control", "placeholder": "暱稱" }), ) email = fields.EmailField(widget=widgets.EmailInput(attrs={ "class": "form-control", "placeholder": "信箱" }), ) password = fields.CharField( widget=widgets.PasswordInput(attrs={ "class": "form-control", "placeholder": "密碼" }), ) password_ck = fields.CharField( widget=widgets.PasswordInput(attrs={ "class": "form-control", "placeholder": "密碼確認" }), ) check_code = fields.CharField( widget=widgets.TextInput(attrs={ "class": "form-control", "placeholder": "驗證碼" }), ) def clean_check_code(self): v1 = self.request.session["check_code"] v2 = self.cleaned_data["check_code"] if v1.upper() != v2.upper(): raise ValidationError(message="驗證碼錯誤") return v2 def clean(self): value_dict = self.cleaned_data v1 = value_dict.get("password") v2 = value_dict.get("password_ck") if v1 != v2: raise ValidationError(message="密碼輸入不一致") return self.cleaned_data
class RegForm(forms.Form): username = forms.CharField(max_length=15, min_length=5, error_messages={"required": "*用户名不能为空","max_length": "*长度不能大于15", "min_length": "*长度不能小于5", }, widget=widgets.TextInput( attrs={"class": "form-control", "placeholder": "用户名长度不能小于5大于15" })) password = forms.CharField(min_length=6, max_length=25,error_messages={"required": "*密码不能为空",'min_length': '*密码长度大于6位' }, widget=widgets.PasswordInput( attrs={"class": "form-control", "placeholder": "密码不能为纯数字,字母且长度大于6位" })) confirm_password = forms.CharField(min_length=6, error_messages={"required": "*密码不能为空", 'min_length': '*密码长度大于6位'}, widget=widgets.PasswordInput(attrs={"class": "form-control", "placeholder": "再次输入密码"})) email = forms.EmailField(error_messages={"required": "*邮箱不能为空",'invalid': '*邮箱格式错误' }, widget=widgets.EmailInput(attrs={"class": "form-control", "placeholder": "邮箱"})) very_code = fields.CharField(error_messages={"required": "验证码不能为空"}, widget=widgets.Input(attrs={"class": "form-control"})) def clean_username(self): #验证用户存不存在 #print(self.cleaned_data["username"]) obj = models.UserInfo.objects.filter(username=self.cleaned_data["username"]) if not obj: #print(self.cleaned_data["username"]) return self.cleaned_data["username"] else: raise ValidationError("*用户名已存在") def clean_email(self): obj = models.UserInfo.objects.filter(email=self.cleaned_data["email"]) if not obj: #print(self.cleaned_data["username"]) return self.cleaned_data["email"] else: raise ValidationError("*邮箱已存在") def clean_password(self): '''验证密码是否合法''' data = self.cleaned_data.get("password") if not data.isdigit(): return self.cleaned_data.get("password") else: raise ValidationError("*密码不能全是数字") def clean(self): if self.cleaned_data.get("password") == self.cleaned_data.get( "confirm_password"): return self.cleaned_data else: raise ValidationError("*两次密码不一致")