ユーザーのパスワードをリセットするためのフォームを作成したかったのです。 current_password
、次にnew_password
とconfirm_new_password
が必要です。私は新しいパスワードが一致していることを確認する検証を行うことができます。 current_password
を検証するにはどうすればよいですか? User
オブジェクトをフォームに渡す方法はありますか?こののは本当に良い例が見つかりパスワードをリセットするDjango +のフォーム
5
A
答えて
6
Djangoは、インポートとあなたのビューで使用することができますPasswordChangeForm
に建てられたが付属しています。
from django.contrib.auth.forms import PasswordChangeForm
しかし、あなた自身のパスワードリセットビューを作成する必要はありません。ビューdjango.contrib.with.views.password_change
とdjango.contrib.auth.views.password_change_done
のペアがあり、URL設定に直接フックすることができます。
0
:http://djangosnippets.org/snippets/158/
を[EDIT]
私は、上記のリンクを使用して、いくつかの変更を加えました。彼らはここに下記のとおりです。
class PasswordForm(forms.Form):
password = forms.CharField(widget=forms.PasswordInput, required=False)
confirm_password = forms.CharField(widget=forms.PasswordInput, required=False)
current_password = forms.CharField(widget=forms.PasswordInput, required=False)
def __init__(self, user, *args, **kwargs):
self.user = user
super(PasswordForm, self).__init__(*args, **kwargs)
def clean_current_password(self):
# If the user entered the current password, make sure it's right
if self.cleaned_data['current_password'] and not self.user.check_password(self.cleaned_data['current_password']):
raise ValidationError('This is not your current password. Please try again.')
# If the user entered the current password, make sure they entered the new passwords as well
if self.cleaned_data['current_password'] and not (self.cleaned_data['password'] or self.cleaned_data['confirm_password']):
raise ValidationError('Please enter a new password and a confirmation to update.')
return self.cleaned_data['current_password']
def clean_confirm_password(self):
# Make sure the new password and confirmation match
password1 = self.cleaned_data.get('password')
password2 = self.cleaned_data.get('confirm_password')
if password1 != password2:
raise forms.ValidationError("Your passwords didn't match. Please try again.")
return self.cleaned_data.get('confirm_password')
関連する問題
- 1. パスワードをJavaでリセットする
- 2. メールでパスワードをリセットする
- 3. パスワードをリセットする7
- 4. Yii2でパスワード検証をリセット
- 5. Google Appsのユーザーのパスワードをリセットする
- 6. パスワードをリセットするときのエラー
- 7. フォームの値をリセットする
- 8. パスワードをリセットしてユーザーをロック
- 9. フォームをJavaScriptでリセットする
- 10. AJAXフォームをリセットする
- 11. フォームにユーザーコントロールをリセットする
- 12. Djangoフォームはエラー後に値をリセットします
- 13. Androidフォームのリセット?
- 14. Swift2 Firebaseパスワード回復/リセット
- 15. 戻るボタンのフォームをリセットする
- 16. メールのみを使用してユーザーのパスワードをリセットする
- 17. POSTでパスワードを暗号化するDjango
- 18. パスワードをリセットするためのメールテンプレートを作成する
- 19. Devits PUTの代わりにパスワードのリセット
- 20. Devitsでのパスワードのリセット問題
- 21. Djangoのパスワード変更
- 22. .snkファイルのパスワードをリセットすることはできますか?
- 23. プログラムでフォームをリセットする方法は?
- 24. AngularJs。$ setPristineからフォームをリセットする
- 25. VBAでのフォームのリセット
- 26. RailsフォームでのRecaptchaのリセット
- 27. SQL Server 2008のユーザー名とパスワードをリセットする方法
- 28. AngularJS(フロントエンド)からパスワードをリセットするための投稿
- 29. Datastax Opscenterの管理パスワードをリセットする方法は?
- 30. symfonyの管理者パスワードをリセットするには?
私の目的ではこれはうまくいかないでしょう。以来、私は多くの他のものを含むフォーム内でパスワードリセットを組み合わせている。しかし、これはこのユースケースの正しい方法です。 – KVISH
@KVISHこれは非常に遅いコメントですが、レコードのために、複数のDjangoフォームをHTMLの '