0
class EnhancedArticleForm(ArticleForm):
    def clean_pub_date(self):

这是 Djangobook 中的一个示例。当我们在 Django 中说“干净”时,它实际上是什么意思?我在试图理解它时遇到了一些困难。

4

2 回答 2

0

清理只不过是将其规范化为一致(适用)的格式。

每次表单验证时, ( form.is_valid()) 它都会为表单运行clean()clean_<fields>(),如果有错误,则引发验证异常。

例如,假设您有一个仅接受来自特定域的电子邮件的应用程序,abc.com假设cnn.combbc.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及其用法。

于 2013-07-24T01:32:45.707 回答
0

它只是对一个或多个表单/模型表单字段进行自定义验证的命名约定。有关更多信息,请参阅https://docs.djangoproject.com/en/1.5/ref/forms/validation/#cleaning-and-validating-fields-that-depend-on-each-other

于 2013-07-24T01:23:45.043 回答