当我在view.py
中创建类实例时,我无法理解为什么以及如何引发 RegistrationForm 类方法 clean_usernamemy form.py
class RegistrationForm(forms.Form):
firm_name = forms.CharField()
username = forms.CharField()
def clean_username(self):
print "inside clean_username ..I don know how this called"
if db.firm.find(username =self.cleaned_data['username']):
raise forms.ValidationError((u'This username is already taken. Please choose another.'))
return self.cleaned_data['username']
我的view.py
def main(request):
if request.method == 'POST':
form = RegistrationForm(request.POST)
if form.is_valid():
new_user = form.save()
return HttpResponseRedirect("/thanks/")
else:
form = RegistrationForm()
return render(request, "registration.html", {
'form': form,
})
这会打印出来“在clean_username里面..我不知道这是怎么称呼的”
根据我的理解,类方法clean_username()不应该被运行,直到像form.clean_username()
这样被激活。答案 0 :(得分:2)
该方法由django自动调用,作为表单和字段验证的一部分。
表单的验证分为几个步骤,即可 定制或覆盖:
表单子类中的
clean_<fieldname>()
方法 - 其中<fieldname>
替换为表单字段属性的名称。 此方法执行特定于该特定的任何清洁 属性,与其所在字段的类型无关。这个方法是 没有传递任何参数。