class UserRegister(Form): account = fields.CharField( label="账号", widget=widgets.TextInput(attrs={"class": "form-control"}) ) pwd = fields.CharField( label="密码", widget=widgets.PasswordInput(attrs={"class": "form-control"}) ) check_pwd = fields.CharField( label="确认密码", widget=widgets.PasswordInput(attrs={"class": "form-control"}) ) user_name = fields.CharField( label="昵称", widget=widgets.TextInput(attrs={"class": "form-control"}) ) user_avatar = fields.ImageField( label="头像", required=False, widget=widgets.FileInput() ) user_tel = fields.CharField( label="联系方式", widget=widgets.TextInput(attrs={"class": "form-control"}) )
class ArticleInfoForm(forms.Form): title = fields.CharField(max_length=50, min_length=5, label='文章标题', error_messages={ 'max_length': '文章标题不能超过50', 'min_length': '文章标题不能少于5' }) desc = fields.CharField(max_length=200, min_length=5, label='文章简介', error_messages={ 'max_length': '文章简介不能超过200', 'min_length': '文章简介不能少于5' }) content = fields.CharField(widget=widgets.Textarea, label='文章内容') image = fields.ImageField(label='文章图片') category = fields.ChoiceField(label='文章类别', widget=widgets.Select, choices=[]) def __init__(self, *args, **kwargs): super(ArticleInfoForm, self).__init__(*args, **kwargs) self.fields['category'].choices = Category.objects.all().values_list( 'id', 'name')
class BlogForm(Form): title = fields.CharField( max_length=20, min_length=5, error_messages={ 'required': '标题不能为空', 'min_length': '标题最少为5个字符', 'max_length': '标题最多为20个字符' }, widget=widgets.TextInput(attrs={ 'class': "form-control", 'placeholder': '标题5-20个字符' })) content = fields.CharField( min_length=10, error_messages={ 'required': '内容不能为空', 'min_length': '内容最少为10个字符' }, widget=widgets.TextInput(attrs={ 'class': "form-control", 'placeholder': '内容最少10个字符' })) pic = fields.ImageField(required=True, error_messages={ 'required': '图片不能为空', 'invalid': '图片格式错误' })
class BxsilderEditForm(forms.Form): status = fields.CharField(widget=widgets.RadioSelect(choices=((1, '上架'), (0, '下架')))) img = fields.ImageField(required=False, error_messages={ 'invalid': '文件类型上传错误', }) weight = fields.IntegerField(required=False, error_messages={'invalid': '请输入整数'})
class SneakerForm(Form): title = fields.CharField(max_length=100) content = fields.CharField(max_length=1000, widget=forms.Textarea(attrs={ 'rows': 15, 'cols': 100 })) pic = fields.ImageField() sneakerReleaseDate = forms.DateField(widget=forms.TextInput( attrs={'class': 'datepicker'})) color = fields.CharField(max_length=100) price = fields.IntegerField() store = fields.CharField(max_length=100) storepic = fields.ImageField() url = fields.URLField(max_length=100) reseller = fields.CharField(max_length=100) resellerlink = fields.URLField(max_length=100)
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 TroubleForm(forms.Form): title = fields.CharField(widget=widgets.TextInput(attrs={ 'class': 'form-control', 'name': 'title' })) detail = fields.CharField(widget=widgets.TextInput(attrs={ 'id': 'trouble', 'name': 'trouble' }), required=False) image = fields.ImageField( widget=widgets.FileInput(attrs={'name': 'troubleImage'}), required=False)
class BxsilderForm(forms.Form): """ 首页幻灯片上传 """ status = fields.CharField(widget=widgets.RadioSelect(choices=((1, '上架'), (0, '下架')))) img = fields.ImageField(required=True, error_messages={ 'required': '图片不能为空', 'invalid': '文件类型上传错误', }) weight = fields.IntegerField(required=False, error_messages={'invalid': '请输入整数'}) url = fields.CharField(error_messages={'required': 'URL不能为空'})
class EmployeeCreateForm(ModelForm): image = fields.ImageField() class Meta: model = User fields = [ 'first_name', 'last_name', 'gender', 'email', 'password', 'address', 'phone', 'username', 'image' ] def __init__(self, *args, **kwargs): super(EmployeeCreateForm, self).__init__(*args, **kwargs) for field in self.fields: self.fields[field].widget.attrs['class'] = 'form-control'
class StoreRegister(Form): account = fields.CharField( label="账号", widget=widgets.TextInput(attrs={"class": "form-control"}) ) pwd = fields.CharField( label="密码", widget=widgets.PasswordInput(attrs={"class": "form-control"}) ) check_pwd = fields.CharField( label="确认密码", widget=widgets.PasswordInput(attrs={"class": "form-control"}) ) real_name = fields.CharField( label="真实姓名", widget=widgets.TextInput(attrs={"class": "form-control"}) ) identity_card = fields.CharField( label="身份证号", widget=widgets.TextInput(attrs={"class": "form-control"}) ) store_name = fields.CharField( label="商家名称", widget=widgets.TextInput(attrs={"class": "form-control"}) ) store_avatar = fields.ImageField( label="头像", required=False, widget=widgets.FileInput() ) store_tel = fields.CharField( label="联系方式", widget=widgets.TextInput(attrs={"class": "form-control"}) ) address = fields.CharField( label="地址", widget=widgets.TextInput(attrs={"class": "form-control"}) ) open_time = fields.TimeField( label="开店时间", widget=widgets.TextInput(attrs={"class": "form-control"}) ) close_time = fields.TimeField( label="关店时间", widget=widgets.TextInput(attrs={"class": "form-control"}) ) remark = fields.CharField( label="商家介绍", widget=widgets.Textarea(attrs={"class": "form-control"}) )
class UserInfoFrom(Form): """ 用户信息form """ avatar = fields.ImageField(label="头像", required=False, widget=widgets.FileInput(attrs={ "id": "avatar", "style": "display:none" })) nickname = fields.CharField( label="昵称:", widget=widgets.TextInput(attrs={"class": "form-control"}), max_length=18, min_length=1, required=False, error_messages={ 'max_length': "用户名长度不能超过18位", 'min_length': "用户名长度不能少于6位", }) sex = fields.CharField( initial=1, label="性别:", required=False, widget=widgets.RadioSelect(choices=[(1, "男"), (2, "女")]), ) mobile = fields.IntegerField( label="电话号码", required=False, widget=widgets.TextInput(attrs={"class": "form-control"})) intro = fields.CharField( label="个人介绍", required=False, max_length=200, widget=widgets.Textarea(attrs={ "placeholder": "快些点简介介绍下自己吧......", "class": "form-control" })) def setvalue(self, avatar, nickname, sex, mobile, intro): self.fields['avatar'].widget.attrs.update( {'value': avatar if avatar is not None else ""}) self.fields['nickname'].widget.attrs.update( {'value': nickname if nickname is not None else ""}) self.initial["sex"] = sex self.fields['mobile'].widget.attrs.update( {'value': mobile if mobile is not None else ""}) self.initial["intro"] = intro
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 UpdateStoreForm(Form): store_id = fields.CharField(required=False) store_name = fields.CharField( label="商家名称", widget=widgets.TextInput(attrs={"class": "form-control"})) store_avatar = fields.ImageField(label="头像", required=False, widget=widgets.FileInput()) store_tel = fields.CharField( label="联系方式", widget=widgets.TextInput(attrs={"class": "form-control"})) address = fields.CharField( label="地址", widget=widgets.TextInput(attrs={"class": "form-control"})) open_time = fields.TimeField( label="开店时间", widget=widgets.TextInput(attrs={"class": "form-control"})) close_time = fields.TimeField( label="关店时间", widget=widgets.TextInput(attrs={"class": "form-control"})) remark = fields.CharField( label="商家介绍", widget=widgets.Textarea(attrs={"class": "form-control"}))
class CommentForm(forms.Form): comment_content = fields.CharField(required=False) comment_img = fields.ImageField(required=False)
class GoodForm(Form): good_pic = fields.ImageField(label="商品图片", required=False, widget=widgets.FileInput()) good_name = fields.CharField( label="名称", required=True, max_length=10, widget=widgets.TextInput(attrs={"class": "form-control"}), error_messages={ 'required': '商品名称不能为空', 'max_length': '商品名称长度不能超过10', }) price = fields.FloatField( label="单价", required=True, widget=widgets.NumberInput(attrs={"class": "form-control"}), ) discount = fields.FloatField( label="折扣", required=False, widget=widgets.NumberInput(attrs={"class": "form-control"}), ) good_num = fields.IntegerField( label="库存", required=True, widget=widgets.NumberInput(attrs={"class": "form-control"}), ) remark = fields.CharField( label="备注", required=False, widget=widgets.Textarea(attrs={"class": "form-control"})) good_type = fields.ChoiceField( # choices=GoodType.objects.filter(store_id=1, goodtype_status=1).values_list("goodtype_id", "goodtype_name"), label="商品类型", initial=1, widget=widgets.Select(attrs={ "class": "form-control", "style": "width:150px;display:inline" })) def __init__(self, *args, **kwargs): super(GoodForm, self).__init__(*args, **kwargs) # 调用父类的__init__ self.fields['good_type'].choices = GoodType.objects.filter( store_id=1, goodtype_status=1).values_list("goodtype_id", "goodtype_name") def set_store_id(self, store_id): self.store_id = store_id def clean_discount(self): val = self.cleaned_data.get("discount") if val: if 1 >= val > 0: return val else: raise ValidationError("优惠打折须在0-1之间") else: return val def clean_price(self): val = self.cleaned_data.get("price") if 0 <= val <= 9999: return val else: raise ValidationError("商品价格须在0-999之间") def clean_good_name(self): val = self.cleaned_data.get("good_name") store_id = self.store_id ret = Goods.objects.filter(good_name=val, good_store_id=store_id) if not ret: return val else: raise ValidationError("本店已存在同名商品") def set_value( self, good_type_id, good_name, price, discount, good_num, remark, ): self.initial['good_type'] = good_type_id self.fields['good_name'].widget.attrs.update( {'value': good_name if good_name is not None else ""}) self.fields['price'].widget.attrs.update( {'value': price if price is not None else ""}) self.fields['discount'].widget.attrs.update( {'value': discount if discount is not None else ""}) self.fields['good_num'].widget.attrs.update( {'value': good_num if good_num is not None else ""}) self.initial['remark'] = remark
class Register(Form): username = fields.CharField(max_length=25, required=True, label='昵称', error_messages={ 'required': "昵称不能为空", 'invalid': "输入错误", 'max_length': "账户长度不能超过25", }) account = fields.CharField(max_length=128, required=True, label='用户名', error_messages={ 'required': "用户名不能为空", 'invalid': "输入错误", }) pwd = fields.CharField(max_length=32, min_length=8, required=True, label='密码', error_messages={ 'required': "密码不能为空", 'invalid': "输入错误", 'max_length': "账户长度不能超过32", 'min_length': "密码长度不能少于8", }) confirm_pwd = fields.CharField(max_length=32, min_length=8, required=True, label='密码', error_messages={ 'required': "密码不能为空", 'invalid': "输入错误", 'max_length': "账户长度不能超过32", 'min_length': "密码长度不能少于8", }) email = fields.EmailField(max_length=255, required=True, label='邮箱', error_messages={ 'required': "邮箱不能为空", 'invalid': "邮箱格式错误", }) img = fields.ImageField(required=True, label='图片', error_messages={ 'required': "图片不能为空", }) verify_code = fields.CharField(max_length=4, min_length=4, required=True, label='验证码', error_messages={ 'required': "验证码不能为空", 'max_length': "验证码长度必须为4", 'min_length': "验证码长度必须为4", }) def clean_account(self): try: account = self.cleaned_data['account'] except: pass if models.User.objects.filter(account=account).count(): raise ValidationError("账号已存在") else: return self.cleaned_data["account"] def clean(self): print("开始校验密码一致性") pwd = self.cleaned_data['pwd'] confirm_code = self.cleaned_data['confirm_pwd'] print(pwd) print(confirm_code) if pwd != confirm_code: print('密码不一致') raise ValidationError("密码输入不一致,请重新输入") else: print("密码通过校验") return self.cleaned_data
class ImageForm(forms.Form): imgFile = fields.ImageField(error_messages={ 'required': '图片不能为空', 'invalid': '文件类型上传错误', })
class RegisterForm(Form): '用户注册' username = fields.CharField(max_length=32, min_length=2, required=True, widget=widgets.TextInput(attrs={ 'class': "form-control", 'placeholder': "用户名" })) nickname = fields.CharField(max_length=32, min_length=2, required=True, widget=widgets.TextInput(attrs={ 'class': "form-control", 'placeholder': "昵称" })) email = fields.EmailField(max_length=32, min_length=2, required=True, widget=widgets.TextInput(attrs={ 'class': "form-control", 'placeholder': "邮箱" })) password = fields.CharField( max_length=32, min_length=2, required=True, widget=widgets.PasswordInput(attrs={ 'class': "form-control", 'placeholder': "密码" })) password2 = fields.CharField( max_length=32, min_length=2, required=True, widget=widgets.PasswordInput(attrs={ 'class': "form-control", 'placeholder': "请再次输入密码" })) check_code = fields.CharField(widget=widgets.TextInput( attrs={ 'class': "form-control", 'placeholder': "验证码" })) avatar = fields.ImageField(widget=widgets.FileInput( attrs={ 'class': 'user_avatar', 'style': "position: absolute;right: -460px;opacity:0" }), required=False) # remember=fields.ChoiceField(widget=widgets.CheckboxInput) def __init__(self, request, *args, **kwargs): super(RegisterForm, self).__init__(*args, **kwargs) self.request = request def clean_username(self): username_input = self.cleaned_data.get('username') if models.UserInfo.objects.filter(username=username_input).values( 'username').first() == None: # 如果用户已经注册过 return username_input raise ValidationError('该用户已注册') def clean_check_code(self): input_code = self.cleaned_data.get('check_code') session_code = self.request.session.get('check_code') if input_code.upper() == session_code: return input_code raise ValidationError('验证码错误') def clean(self): password1 = self.cleaned_data.get('password') password2 = self.cleaned_data.get('password2') if password1 == password2: return self.cleaned_data self.add_error('password2', ValidationError('密码不一致'))
class RegisterForm(Form): '用户注册' username = fields.CharField(max_length=32, min_length=2, required=True, widget=widgets.TextInput(attrs={ 'class': "form-control", 'placeholder': "用户名" })) # nickname = fields.CharField(max_length=32, min_length=2, required=True, # widget=widgets.TextInput(attrs={'class': "form-control", 'placeholder': "昵称"})) email = fields.EmailField(max_length=32, min_length=2, required=True, widget=widgets.TextInput(attrs={ 'class': "form-control", 'placeholder': "邮箱" })) password = fields.CharField( max_length=32, min_length=2, required=True, widget=widgets.PasswordInput(attrs={ 'class': "form-control", 'placeholder': "密码" })) password2 = fields.CharField( max_length=32, min_length=2, required=True, widget=widgets.PasswordInput(attrs={ 'class': "form-control", 'placeholder': "请再次输入密码" })) check_code = fields.CharField(widget=widgets.TextInput( attrs={ 'class': "form-control", 'placeholder': "验证码" })) avatar = fields.ImageField(widget=widgets.FileInput( attrs={ 'class': 'user_avatar', 'style': "position: absolute;right: -460px;opacity:0" }), required=False) role = fields.ChoiceField( widget=widgets.Select(attrs={'class': "form-control"}), initial=1) department = fields.ChoiceField(widget=widgets.Select( attrs={'class': "form-control"})) # remember=fields.ChoiceField(widget=widgets.CheckboxInput) def __init__(self, request, *args, **kwargs): super(RegisterForm, self).__init__(*args, **kwargs) self.request = request self.fields['role'].choices = models.Role.objects.all().values_list( 'rid', 'title') self.fields['department'].choices = models.Department.objects.all( ).values_list('did', 'title') def clean_username(self): username = self.cleaned_data.get('username') print(username, 'username----------') print(self.cleaned_data, '--------------clean_username') username_database = models.Identify_user.objects.filter( username=username).values('username').first() print(username_database, '从公司数据库获取的信息') if username_database: return username raise ValidationError('用户不在本公司') def clean_email(self): email = self.cleaned_data.get('email') print(email, 'email----------') print(self.cleaned_data, '--------------clean_email') email_database = models.Identify_user.objects.filter( email=email).values('email').first() print(email_database, '从公司数据库获取的信息') if email_database: return email raise ValidationError('用户邮箱不在本公司') def clean_check_code(self): input_code = self.cleaned_data.get('check_code') session_code = self.request.session.get('check_code') print('-----form ---') print(self.cleaned_data) print(input_code, session_code) if input_code.upper() == session_code: return input_code raise ValidationError('验证码错误') def clean(self): password1 = self.cleaned_data.get('password') password2 = self.cleaned_data.get('password2') # if password1==password2: # print('密码一致') # return self.cleaned_data # else: # self.add_error('password2',ValidationError('密码不一致')) print('进入密码确认') username_form = self.cleaned_data.get('username') email_form = self.cleaned_data.get('email') username_database_from_email = models.Identify_user.objects.filter( email=email_form).values('username').first( ) # 依据用户输入的Email查找数据库中的username再与用户输入的username比对 print('username_form', username_form, 'username_database_from_email', username_database_from_email) if username_database_from_email != None: if username_form == username_database_from_email.get('username'): print('用户名和Email比对正确') if password2 == password1: return self.cleaned_data else: self.add_error('username', ValidationError('密码不一致')) else: self.add_error('username', ValidationError('用户名和邮箱不符')) else: self.add_error('username', ValidationError('用户名或邮箱不在公司数据库'))
class registerform(forms.Form): username = fields.CharField( max_length=30, label='用户名', error_messages={'required': '用户名不能为空!'}, widget=widgets.TextInput(attrs={ 'class': 'username', 'placeholder': '请输入用户名' })) password = fields.CharField( max_length=30, error_messages={'required': '密码不能空!'}, widget=widgets.PasswordInput(attrs={ 'class': 'pass', 'placeholder': '请输入密码' })) password2 = fields.CharField( max_length=30, error_messages={'required': '密码不能空!'}, widget=widgets.PasswordInput(attrs={ 'class': 'pass', 'placeholder': '请确认密码' })) email = fields.EmailField( max_length=30, error_messages={'required': '邮箱不能空!'}, ) country = fields.CharField(initial=1, widget=widgets.Select(choices=((1, '美国'), (2, '日本')))) image_url = fields.ImageField(required=False) #验证码生成 captcha = CaptchaField() def clean_username(self): #cleaned_data为表单内容的字典 name = self.cleaned_data['username'] if len(name) < 1 or len(name) > 30: raise ValidationError('用户名必须在1-30字符内!') if User.objects.filter(username=name): raise ValidationError('用户名已存在!') #必须return 表单内容 return name def clean_password(self): pass1 = self.cleaned_data['password'] if len(pass1) < 6 or len(pass1) > 30: raise ValidationError('密码长度在6-30字符内') return pass1 def clean_password2(self): pass2 = self.cleaned_data['password2'] pass1 = self.cleaned_data['password'] if pass1 != pass2: raise ValidationError('两次密码不一致!') return pass2 def clean_email(self): em = self.cleaned_data['email'] if User.objects.filter(email=em): raise ValidationError('邮箱已被注册!') return em
class UserInfoForm(Form): username = fields.CharField( label='用户名', required=True, error_messages={'required': '用户名不能为空'}, widget=widgets.TextInput(attrs={ 'placeholder': '用户名', 'class': 'form-control data' })) nickname = fields.CharField( label='昵称', required=True, error_messages={'required': '昵称不能为空'}, widget=widgets.TextInput(attrs={ 'placeholder': '昵称', 'class': 'form-control data' })) password = fields.CharField( label='密码', required=True, error_messages={'required': '密码不能为空'}, widget=widgets.PasswordInput(attrs={ 'placeholder': '密码', 'class': 'form-control data' })) repaet_password = fields.CharField( label='再一次输入密码', required=True, error_messages={'required': '请再次输入密码'}, widget=widgets.PasswordInput(attrs={ 'placeholder': '密码', 'class': 'form-control data' })) email = fields.EmailField( label='邮箱', required=True, error_messages={ 'required': '邮箱不能为空', 'invalid': '邮箱格式错误' }, widget=widgets.EmailInput(attrs={ 'placeholder': '邮箱', 'class': 'form-control data' })) tel = fields.CharField( label='手机号', required=True, error_messages={'required': '手机号码不能为空'}, widget=widgets.NumberInput(attrs={ 'placeholder': '手机号码', 'class': 'form-control data' })) avatar = fields.ImageField( label='头像', widget=widgets.FileInput(attrs={'class': 'avatar_file'})) valid_code = fields.CharField( label='验证码', required=True, error_messages={'required': '请输入验证码'}, widget=widgets.TextInput(attrs={ 'placeholder': '验证码', 'class': "form-control item" })) def clean(self): if self.cleaned_data.get('password') == self.cleaned_data.get( 'repeat_password'): return self.cleaned_data else: raise ValidationError('密码不一致,请重新输入') def clean_tel(self): length = len(self.cleaned_data.get('tel')) if length == 11: return self.cleaned_data.get('tel') raise ValidationError('不是正确的手机号码') def clean_username(self): username = self.cleaned_data.get('username') if models.UserInfo.objects.filter(username=username): raise ValidationError('用户名已存在') else: return self.cleaned_data.get('username') def clean_password(self): if len(self.cleaned_data.get('password')) > 8: return self.cleaned_data.get('password') else: raise ValidationError('密码八位以上') def clean_email(self): email = self.cleaned_data.get('email') if models.UserInfo.objects.filter(email=email): raise ValidationError('邮箱已使用') else: return self.cleaned_data.get('email') def clean_valid_code(self): if self.cleaned_data.get('valid_code').upper( ) == self.request.session.get('valid_code').upper(): return self.cleaned_data.get('valid_code') else: raise ValidationError('验证码错误') def __init__(self, request, *args, **kwargs): super(UserInfoForm, self).__init__(*args, **kwargs) self.request = request
class ValidateProfileForm(forms.Form): frontal_photo = fields.ImageField(required=True) back_photo = fields.ImageField(required=True)
class Update_userinfo(Form): '修改用户信息' username = fields.CharField(max_length=32, min_length=2, required=True, widget=widgets.TextInput(attrs={ 'class': "form-control", 'placeholder': "用户名" })) nickname = fields.CharField(max_length=32, min_length=2, required=True, widget=widgets.TextInput(attrs={ 'class': "form-control", 'placeholder': "昵称" })) email = fields.EmailField(max_length=32, min_length=2, required=True, widget=widgets.TextInput(attrs={ 'class': "form-control", 'placeholder': "邮箱" })) password = fields.CharField( max_length=32, min_length=2, required=True, widget=widgets.PasswordInput(attrs={ 'class': "form-control", 'placeholder': "密码" })) password2 = fields.CharField( max_length=32, min_length=2, required=True, widget=widgets.PasswordInput(attrs={ 'class': "form-control", 'placeholder': "请再次输入密码" })) check_code = fields.CharField(widget=widgets.TextInput( attrs={ 'class': "form-control", 'placeholder': "验证码" })) avatar = fields.ImageField(widget=widgets.FileInput( attrs={ 'class': 'user_avatar', 'style': "position: absolute;right: -460px;opacity:0" }), required=False) # remember=fields.ChoiceField(widget=widgets.CheckboxInput) def __init__(self, request, *args, **kwargs): super(Update_userinfo, self).__init__(*args, **kwargs) self.request = request def clean_username(self): session_subtitle = self.request.session.get('subtitle') user_obj = models.UserInfo.objects.filter( blog__subtitle=session_subtitle).values('nid').first() input_username = self.cleaned_data.get('username') input_user_id = models.UserInfo.objects.filter( username=input_username).values('nid').first().get('nid') if input_user_id != None and input_user_id != user_obj.get('nid'): raise ValidationError('该用户名已经存在') return input_username def clean_check_code(self): input_code = self.cleaned_data.get('check_code') session_code = self.request.session.get('check_code') if input_code.upper() == session_code: return input_code raise ValidationError('验证码错误') def clean(self): password1 = self.cleaned_data.get('password') password2 = self.cleaned_data.get('password2') if password1 == password2: print('密码一致') return self.cleaned_data self.add_error('password2', ValidationError('密码不一致'))