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