• パスワードの変更・リセットの実装方法【分かりやすく解説】

    パスワードを変更したり、リセットする実装を一から作るのは大変ですが、djangoではこのパスワード変更・リセットの機能があらかじめ備えられています。

    そこで今回は、パスワードの変更・リセットの実装方法についてみていきましょう。

    パスワードの変更画面は、urlpatternに一行追加するだけ

    パスワードの変更の実装は、urlpattens.pyファイルに一行コードを追加するだけで実装できます。

    なぜコードを追加するだけで実装できるのかというと、djangoがすでにパスワード変更用のページを作ってくれているからです。

    つまり、そのページにアクセスするためのurlを設定するだけで、パスワード変更画面を実装することができるのです。

    実際にコードを書いていきましょう。

    -BASE/project/urls.py

    コード
    

    urlpatterns = [

        ...

        path('accounts/', include('django.contrib.auth.urls')),

        ...

    ]

    これで設定は完了です。

    django.contrib.auth.urlsは、app.urlsのようにアプリのurls.pyファイルを参照するように指示していることと同じです。

    つまり、django.contrib.auth.urlsは、authアプリの中のurls.pyファイルを参照してください。と指示しているのです。

    authアプリの中のurls.pyファイルには、'password_change'というurlにアクセスすることでパスワード変更画面が表示されるように設定されています。

    つまり、localhost:8000/accounts/password_changeというurlにアクセスすることによってパスワードを変更する画面を表示させることができるようになるのです。

    実際にlocalhost:8000/accounts/password_changeにアクセスしてみましょう。

    パスワード変更画面

    古いパスワード、新しいパスワード、新しいパスワードの確認欄があるページを確認することができました。

    画面の表示を変えるには?

    ただ、このパスワード変更画面はdjangoがあらかじめ準備しているものであり、変更したい場合もあるかもしれません。

    ですので、ここからは画面の表示を変更する方法を見ていきましょう。

    画面の表示を変更するためには、registrationフォルダを作り、その中でpassword_change_form.htmlファイルと、password_change_done.htmlファイルを作りましょう。

    上記は、djangoがデフォルトで設定している内容です。

    つまり、djangoはpassword_changeのurlを受け取ると、表示するテンプレートとして、まずはregistration/password_change_form.htmlファイルを探すように設定されているのです。

    このファイルがなかった場合、デフォルトのパスワード変更画面が表示されます。

    パスワードのリセット方法も同じ

    パスワードのリセット方法もパスワードの変更と同じです。

    つまり、urlpatternsにauth.urlsを追加するだけでパスワードのリセットを実装することができます。

    パスワードをリセットするための画面は'password_change'です。

    つまり、localhost:8000/accounts/passwod_resetとういurlにアクセスすることでパスワードリセット画面が表示されるようになります。

    ただし、djangoのデフォルトの機能ではパスワードのリセットをするには、ユーザーに送られたメールのurlをクリックしなければいけません。

    メールの詳しい設定方法については、メールを送る方法を解説という記事を参考にしてください。

    ~Django無料講義~のご案内

    Code for Djangoが、4時間超の無料Django講義をはじめました

    •  ・本を出版したCode for Djangoの
       製作者が作ったサイトです。
    •  ・Code for Djangoの内容も、
       動画で詳しく解説しています。
    •  ・動画は順次ふやしていきますので、
       ただで学び続けることが可能です。
    •  ・Djangoの効率的なスキルアップに、
       是非お役立て下さい。