前提・実現したいこと
こちらのサイトを参考に会員登録機能を作りましたが、
パスワードの変更機能だけ、うまく動きません。
メールアドレスをユーザー名として使うようにし、
ログイン画面、仮登録、メールクリックで本登録、ユーザー情報変更ページ、
パスワード変更ページ、パスワードを忘れた際の再設定機能を持っています。
発生している問題・エラーメッセージ
会員登録、ユーザー情報変更、パスワードを忘れた際の再設定の機能は動きます。
しかし、パスワードの変更機能だけ動きません。
パスワード変更ページで、
古いパスワード、新しいパスワード、新しいパスワード(確認用)を入力して変更ボタンを押すと、
URLが
http://127.0.0.1:8000/password_change/?old_password=○○○○○○○○&new_password1=○○○○○○○○&new_password2=○○○○○○○○&csrfmiddlewaretoken=○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○
のようになるだけで、success_urlで指定した画面に飛ばず、パスワードの変更もできません。
ログを確認すると以下のようになっており、はっきりとしたエラーを見つけられません。
"GET /password_change/?old_password=○○○○○○○○&new_password1=○○○○○○○○&new_password2=○○○○○○○○&csrfmiddlewaretoken=○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○ HTTP/1.1" 200 4955
該当のソースコード
urls.py
python
1 path('user_register/', UserCreate.as_view(), name='user_register'), 2 path('user_register/done/', UserCreateDone.as_view(), name='user_register_done'), 3 path('user_register/complete/<token>/', UserCreateComplete.as_view(), 4 name='user_register_complete'), 5 path('password_change/', PasswordChange.as_view(), name='password_change'), 6 path('password_change/done/', PasswordChangeDone.as_view(), name='password_change_done'), 7 path('password_reset/', PasswordReset.as_view(), name='password_reset'), 8 path('password_reset/done/', PasswordResetDone.as_view(), name='password_reset_done'), 9 path('reset/<uidb64>/<token>/', PasswordResetConfirm.as_view(), name='password_reset_confirm'), 10 path('reset/done/', PasswordResetComplete.as_view(), name='password_reset_complete'),
views.py
python
1class PasswordChange(PasswordChangeView): 2 form_class = MyPasswordChangeForm 3 success_url = reverse_lazy('app:password_change_done') 4 template_name = 'app/password_change.html'
forms.py
python
1class MyPasswordChangeForm(PasswordChangeForm): 2 3 def __init__(self, *args, **kwargs): 4 super().__init__(*args, **kwargs) 5 for field in self.fields.values(): 6 field.widget.attrs['class'] = 'form-control'
はっきりとしたエラーの見つけ方がわからず、手詰まりとなっています。
どなたかお分かりになる方、何卒宜しくお願いします。
回答1件
あなたの回答
tips
プレビュー