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

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

パスワードを変更したり、リセットする実装を一から作るのは大変ですが、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の効率的なスキルアップに、
     是非お役立て下さい。
Created with