实用的Django项目 - 页面168

时间:2011-04-29 22:37:05

标签: python django project

在页168上,有两段代码:

def clean_password2(self):
   if self.cleaned_data['password1'] != self.cleaned_data['password2']:
      raise forms.ValidationError("You must type the same password each time")
   return self.cleaned_data['password2']

def clean(self):
   if 'password1' in self.cleaned_data and 'password2' in self.cleaned_data:
      if self.cleaned_data['password1'] != self.cleaned_data['password2']:
         raise forms.ValidationError("You must type the same password each time")
   return self.cleaned_data

在第二种情况下,代码检查'password1'和'password2'是否具有任何值。在第一种情况下,没有这样的检查。为什么?

2 个答案:

答案 0 :(得分:1)

clean_password2方法正在对字段进行清理,在本例中为password2字段。 (docs

在单个字段验证后调用clean方法。根据文档,这是进行多字段验证的好地方。

了解更多here

答案 1 :(得分:1)

clean_password2中,您正在验证password2字段,因此您确定该字段存在于该表单中,并且无需在self.cleaned_data中检查其是否存在。但这并不意味着他们也无法检查password1的影响力。

clean方法验证整个表单,并且不保证存在的内容。