

django-allauthでpassword changeした場合のページの遷移先を変える方法を教えてください。  
現在は変更に成功しても何も起きず、失敗すると404になるようです。

django 3.1.1  
django-allauth 0.42.0


CC BY-SA 4.0
2020-10-24T09:32:44.603
71477
2021-01-09T02:44:04.907
37297
question
python django
django-allauthでpassword changeした場合のページの遷移先を変える方法


公式ドキュメント(<https://django-
allauth.readthedocs.io/en/latest/configuration.html>)のConfigurationに、例えばACCOUNT_LOGOUT_REDIRECT_URLなど、settings.pyで設定できる項目がすべて書いてありますが、そこにはご希望の設定値は無いようでした（念のため見てみてください）。

そうすると・・・venv\Lib\site-packages\allauth\account\views.pyに定義してある

[code]

    class PasswordChangeView(AjaxCapableProcessFormViewMixin, FormView):
        template_name = "account/password_change." + app_settings.TEMPLATE_EXTENSION
        form_class = ChangePasswordForm
        success_url = reverse_lazy("account_change_password")
    
[/code]

このPasswordChangeViewを継承したクラスをご自分で作成して、success_url
を上書きすればできるのではないでしょうか。（追記：）accounts\urls.pyにも下記ルーティングを上書きします

[code]

    path("password/change/", views.あなたのビュー関数, name="account_change_password"),
    
[/code]

ちなみに、デフォルトの動作を見てみると、パスワードチェンジに成功した時は同じフォームがGETで表示されて、「パスワードが変更されました。」というフラッシュメッセージが表示されました（この処理は、上記のclassのform_validメソッドに書いてあります）。  
また、失敗した場合、例えば現在のパスワードを間違えて入力するとフォームエラーのメッセージ「現在のパスワードを入力してください。」がフォームに表示されました。404はおかしいですね。関連する修正箇所を当たってみてください。完全な答えになっていなくてすみません。


CC BY-SA 4.0
2021-01-08T12:35:11.237
73160
2021-01-09T02:44:04.907
2021-01-09T02:44:04.907
34891
34891
71477
answer