0
我有形式:为什么clean_data中没有字段?
class ChangePasswordForm(forms.Form):
oldpassword = forms.CharField(
min_length=5,
label=_('Old password'),
widget=forms.PasswordInput(),
)
password1 = forms.CharField(
min_length=5,
label=_('Password'),
widget=forms.PasswordInput(),
)
password2 = forms.CharField(
min_length=5,
label=_('Retype'),
widget=forms.PasswordInput(),
)
def clean(self):
if self.cleaned_data['password1'] != self.cleaned_data['password2']:
raise forms.ValidationError(_('The new passwords must be the same'))
else:
return self.cleaned_data
如果我输入到所有领域,我得到POST:
{u'password1': [u'ewrtrwetwe'], u'csrfmiddlewaretoken': [u'2gEAqLjaKC5NgMZrE6Brd9p3vThUC10w'], u'oldpassword': [u'wertwertwet'], u'password2': [u'tewrtwertwert']}
和cleaned_data:
{'password1': u'ewrtrwetwe', 'password2': u'tewrtwertwert', 'oldpassword': u'wertwertwet'}
但如果我输入密码1相同的文字和password2输入我得到POST:
{u'password1': [u'1234'], u'csrfmiddlewaretoken': [u'2gEAqLjaKC5NgMZrE6Brd9p3vThUC10w'], u'oldpassword': [u'wertwertwet'], u'password2': [u'1234']}
和cleaned_data:
{'oldpassword': u'wertwertwet'}
,我得到一个错误:
if self.cleaned_data['password1'] != self.cleaned_data['password2']:
KeyError: 'password1'
为什么?