class EnhancedArticleForm(ArticleForm):
def clean_pub_date(self):
这是 Djangobook 中的一个示例。当我们在 Django 中说“干净”时,它实际上是什么意思?我在试图理解它时遇到了一些困难。
class EnhancedArticleForm(ArticleForm):
def clean_pub_date(self):
这是 Djangobook 中的一个示例。当我们在 Django 中说“干净”时,它实际上是什么意思?我在试图理解它时遇到了一些困难。
清理只不过是将其规范化为一致(适用)的格式。
每次表单验证时, ( form.is_valid()
) 它都会为表单运行clean()
和clean_<fields>()
,如果有错误,则引发验证异常。
例如,假设您有一个仅接受来自特定域的电子邮件的应用程序,abc.com
假设cnn.com
和bbc.com
现在,如果有人尝试注册让我们说xyz.com
,检查这一点并引发验证错误消息的最佳位置将是表单字段的clean
方法。
例子:
class RegistrationForm(forms.ModelForm):
def clean_email(self): #clean_<fieldname> is the convention for "clean"ing a specific field
email = self.cleaned_data['email']
#other validations here
if not email.split('@')[1] in ['abc.com', 'bbc.com', 'cnn.com']:
raise ValidationError('Select from following domains.. ')
return self.cleaned_data['email']
现在这是一个微不足道的例子。
它可能会变得更复杂一些,例如:如果域在 中['abc.com', 'bbc.com', 'cnn.com']
,用户必须选中同意表单上指定的特殊条款和条件的复选框。
为此,您可以参考验证相互依赖的字段
这应该给出一个基本的用例clean
及其用法。
它只是对一个或多个表单/模型表单字段进行自定义验证的命名约定。有关更多信息,请参阅https://docs.djangoproject.com/en/1.5/ref/forms/validation/#cleaning-and-validating-fields-that-depend-on-each-other。