11

ユーザーがパスワードを変更できるプロファイル設定ページがあり、変更する場合は確認する必要があります。パスワードを変更する必要がないため、これを必須フィールドにすることはできません。パスワードフィールドが空でない場合に確認パスワードを検証する例はありますか? そして、それらが等しいかどうかを確認するには?私はそのような例を見つけることができませんでした...

4

1 に答える 1

24

cleanフォームのメソッドに次を追加します。

def clean(self):
    password1 = self.cleaned_data.get('password1')
    password2 = self.cleaned_data.get('password2')

    if password1 and password1 != password2:
        raise forms.ValidationError("Passwords don't match")

    return self.cleaned_data

編集

上記の検証エラー メッセージは に表示されnon_field_errorsます。各パスワード フィールドに表示されるエラー メッセージは指定されていませんが、コンテキストに基づいて、「このフィールドは必須です」というメッセージだと思います。その場合は、フォーム フィールドrequired=Falseを定義するときに、フォーム フィールドにあることを確認してください。または、フォーム サブクラスで作業している (そして実際のフォーム フィールドを編集できない) 場合__init__は、フォームのメソッドをオーバーライドできます。

class MyForm(SomeOtherForm):
    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)

        self.fields['password1'].required = False
        self.fields['password2'].required = False
于 2012-07-06T20:24:12.597 に答える