我已经编写了基于清洁字段的验证。要检查我输入不匹配的密码,请从这两个字段中删除密码。这可能会惹恼用户。我想要这样“如果错误让用户改变一点......不要重新输入整个密码”。但是,用户名验证会在字段中保留用户名 错误之后。为什么会这样?
class signupform(ModelForm):
prmqpass=forms.CharField(widget=forms.PasswordInput())
prmqpass1=forms.CharField(widget=forms.PasswordInput())
class Meta:
model=prmqsignup
exclude=['prmqactivated']
def clean_prmqpass(self):
cd=self.cleaned_data
pwd=cd.get("prmqpass")
if len(str(pwd))<6:
raise ValidationError("Password must be at least of six characters")
if not passstrength(pwd):
raise ValidationError("For stronger security password must contain at least one uppercase,lowercase,number and special character")
return pwd
def clean_prmquname(self):
cd=self.cleaned_data
usrname=cd.get("prmquname")
if len(usrname)<5:
raise ValidationError("Username too short choose more than four characters")
if prmqsignup.objects.exclude(pk=self.instance.pk).filter(prmquname=usrname).exists():
raise ValidationError('Username "%s" is already in use.' % usrname)
return usrname
def clean(self):
cd=self.cleaned_data
pwd=cd.get("prmqpass")
pwd1=cd.get("prmqpass1")
if not pwd==pwd1:
raise ValidationError("Passwords don't match.")
return cd
为什么错误后的用户名值(保持形式)和密码值(闪烁)。参见验证逻辑是相同的。
答案 0 :(得分:2)
密码输入:
<input type='password' ...>
采用一个可选参数:
render_value
:确定在验证错误(默认为False
)后重新显示表单时窗口小部件是否会填入值。
所以你需要像这样初始化你的输入:
prmqpass = forms.CharField(widget=forms.PasswordInput(render_value=True))