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

これは Djangobook の例です。Django で「クリーン」と言うとき、実際にはどういう意味ですか? 私はそれを理解しようとするのに苦労しています。

4

2 に答える 2

0

これは、1 つ以上のフォーム/モデル フォーム フィールドでカスタム検証を行うための命名規則にすぎません。詳細については、 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 に答える
0

クリーニングとは、一貫した (適用可能な) 形式に正規化することに他なりません。

フォームが検証されるたびに ( form.is_valid())フォームに対してclean()および が実行clean_<fields>()され、エラーがある場合は Validation 例外が発生します。

abc.comたとえば、特定のドメインからのメールのみを受け入れるアプリケーションがあるcnn.comとします。bbc.com

現在、誰かが let say に登録しようとし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 に答える