Djangoプロジェクトにdjango-allauthを利用してログイン認証機能を実装する

この記事では、Djangoプロジェクトにdjango-allauthを利用してログイン認証機能を実装する方法を紹介します。

 

◆動作検証環境

・ローカル環境:mac Catalina
・python:3.7.5
・Django:
3.1.2
・django-allauth:0.43.0

 

この記事では、すでにmacのローカル環境の仮想環境にDjangoプロジェクトを作成済みを前提条件としています。

 

お済みでない方は、こちらの記事を参考にして準備を行ってください。
関連記事

macのローカル環境にDjangoの開発環境を設定する方法を紹介します。◆動作検証環境・ローカル環境:mac Catalina・python:3.7.5・Django:3.1.2python3のインストー[…]

macローカル仮想環境にDjangoの開発環境を設定する
スポンサードリンク

django-allauth用ログインアプリケーションと、メインアプリケーションの作成

 

プロジェクトの仮想環境を有効化して、ログインアプリケーションを作成します。
アプリケーション名は、accountsとしました。

 

続いて、メインのアプリケーションを作成します。
アプリケーション名は、appとしました。

 

作成したaccounts,appアプリケーションを、project内のsettings.pyに登録します。

 

カスタムユーザーモデルの作成

 

最近ではユーザー名にメールアドレス、パスワードを設定してユーザー登録する方法が一般的です。

Djangoのデフォルトの認証方法では、ユーザー名にユーザー名(メールアドレスではない)が利用されるため、カスタムユーザーを作成し、メールアドレスでの認証方法に備えます。

 

accounts/models.pyの編集

 

project/settings.pyの編集

 

カスタムユーザーを管理サイト(/admin)で編集できるように設定する。

accounts/admin.pyの編集

 

これまでの変更を反映させる

下記のコマンドを行うか、runボタンを利用して実行します。

 

django-allauthのインストールと初期設定

 

以下のコマンドでdjango-allauthをインストールします。

 

インストール後にsettings.pyを編集します。

 

settings.pyを編集が完了したら、一度migrate を行います。

 

ログイン、ログアウト後の遷移先に指定したViewの設定をします。

app内にtemplatesディレクトリを作成

 

templatesディレクトリ内に、home.html, welcome.htmlを作成する。

app/templates/home.html

 

app/templates/welcome.html

 

app内のルーティングとViewの設定

さきほど作成したhome.html、welcome.htmlの設定を行います。

ルーティング

project/urls.py

 

app内のルーティング設定

まずapp内にurls.pyを作成し、以下のように編集します。

app/urls.py

 

次に、app内のViews.pyを以下のように編集します。

app/views.py

 

ここまでの編集作業が終わりましたら、一度サーバーを立ち上げ、

http://127.0.0.1:8000/home/http://127.0.0.1:8000/welcome/

にアクセスし、表示を確認します。

 

表示が確認できたら、django-allauthのルーティング設定を行います。

project/urls.pyを以下の内容に編集します。

project/urls.p

 

ここまでの設定が完了したら、http://127.0.0.1:8000/accounts/signup/ にアクセスし、django-allauthのデフォルトページにアクセスできるか確認します。

django-allauthのデフォルトページにアクセスできるか確認します

上記のような画面が表示されればOKです。

 

django-allauthデフォルトテンプレートのカスタマイズ

 

path('accounts/', include('allauth.urls')), のようにルーティングする事で、自分でルーティングの設定をすることなく、django-allauthがデフォルトで設定している認証関係のページを利用する事ができます。

URL認証内容とURL name
/accounts/login/Login (account_login)
/accounts/signup/Signup (account_signup)
/accounts/logout/Logout (account_logout)
/accounts/password/set/Password Set(account_set_password)
/accounts/password/change/Password Change(account_change_password)
/accounts/password/reset/Password Reset (account_reset_password)
/accounts/email/E-mails Management (account_email)

 

django-allauthがデフォルトで設定しているページは必要最低限の内容となっており、自分でデザインを行う方法が一般です。

templates と、account ディレクトリを作成しtemplates/account の階層の中に指定された名前でhtmlファイルを作成し、オーバーライドする事が可能です。
 


以上、Djangoプロジェクトにdjango-allauthを利用してログイン認証機能を実装する方法を紹介しました。

 

参考ソース:https://django-allauth.readthedocs.io/en/latest/index.html