我见过一些示例代码:
def clean_message(self):
message = self.cleaned_data['message']
num_words = len(message.split())
if num_words < 4:
raise forms.ValidationError("Not enough words!")
return message
Run Code Online (Sandbox Code Playgroud)
和一些例子:
def clean(self):
username = self.cleaned_data.get('username')
password = self.cleaned_data.get('password')
...
self.check_for_test_cookie()
return self.cleaned_data
Run Code Online (Sandbox Code Playgroud)
这两者的区别是什么?
我正在写一个Django网站,我正在为表单编写自己的验证:
class CreateJobOpportunityForm(forms.Form):
subject = forms.CharField(max_length=30)
start_date = forms.DateField(widget=SelectDateWidget)
end_date = forms.DateField(widget=SelectDateWidget)
def clean_start_date(self):
start_date = self.cleaned_data['start_date']
end_date = self.cleaned_data['end_date']
if start_date > end_date :
raise forms.ValidationError("Start date should be before end date.")
return start_date
Run Code Online (Sandbox Code Playgroud)
但是当start_date小于end_date时,它会说:
KeyError at /create_job_opportunity
'end_date'
Run Code Online (Sandbox Code Playgroud)
为什么不认识'end_date'钥匙?