django-allauthでユーザー認証構築のための3ステップ

Django

(最終更新月:2021年12月)

✔このような方へ向けて書かれた記事となります

「ユーザー登録、ログインするページを作りたい!」

「一から認証機能を構築したいけどどうしたら良いの!?」

✔当記事を通じてお伝えすること

  • django-allauthでユーザー認証機能を構築する3ステップ

具体的には、

  1. django-allauthのインストール
  2. django-allauthの設定方法
  3. 管理ページでの行う設定

について解説していきます。

django-allauthをインストール・設定するだけで下記の機能が使えるようになります。

  • ログイン
  • 新規登録
  • ログアウト
  • パスワード変更
  • パスワードリセット
  • Eメールアドレス登録変更
  • Eメールアドレス認証
  • SNS等のアカウントと紐付け

パッと見ただけでも一から作るのはとても大変だと理解いただけると思います。

公式ドキュメントも充実していますが、「全て英語でよくわからない!」と言う声もよく聞きます。お役に立てれば幸いです。

【著者プロフィール】

profile_icon
【Python歴】11年 x 【Django歴】10年
HP作成、社内システムの構築、コンサルティング

当ブログを通じて、Webアプリの書き方やアプリの公開方法までを解説しています。

☆日報アプリ「D-Repo」(デモ版)→こちら

※Djangoをベースに作成したアプリです。

☆便利ツールアプリ「Tool Station」→こちら

※Django REST frameworkとReactで作成しているアプリです。

月9,800円でWebデザインが学べる

デザナルは、Webデザインに苦手意識がある方におすすめのサブスク型スクールです。

なぜなら安い以外にも以下のような特徴があるからです。

  • 初期費用不要
  • 教材が使い放題
  • 案件で収入も得られる

デザナルは稼ぎながら学べる、格安のWebデザインスクールです。

>>デザナルの詳細はこちら<<

利用者の声など、詳しくはこちらでご覧ください↓

django-allauthのインストール

ターミナルで、

pip install django-allauth

でインストールしましょう

インストールが終わったら、

pip freeze > requirements.txt

など、パッケージを記録しておくことを忘れずに!

django-allauthの設定

settings.py

まずは、インストール後にsettigs.pyで下記を追記する必要があります。

AUTHENTICATION_BACKENDS = [ 
  'django.contrib.auth.backends.ModelBackend',     
  'allauth.account.auth_backends.AuthenticationBackend',
] 

SITE_ID = 1

下記↓については、それぞれ確認して足りないものを追加してください。

TEMPLATES

    ....,      
    'DIRS': [BASE_DIR / "templates"],        
    ....,      
    'OPTIONS': {            
            'context_processors': [
            ....,
            'django.template.context_processors.request',
            ....,
                                             ], 
                     }, 
                              }, ]

INSTALLED_APPS

INSTALLED_APPS = [
'django.contrib.auth',    
'django.contrib.messages',     
'django.contrib.sites',    
'allauth',     
'allauth.account',     
'allauth.socialaccount'
]

その他、SNSアカウントと紐付ける場合はそれぞれ設定が必要です。

当記事では説明を割愛します。

urls.pyの設定

settings.pyと同列のurls.pyに下記を追記します。

...
from django.urls import path, include

urlpatterns = [
    ...
    path('accounts/', include('allauth.urls')),
    ...
]

これによってそれぞれのページへアクセスすることができるようになります。

マイグレーションの実行

マイグレーションを実行し、変更を適用します。

$ python manage.py migrate
Operations to perform:
  Apply all migrations: account, accounts, admin, auth, contenttypes, nippo, sessions, sites, socialaccount
Running migrations:
  Applying account.0001_initial... OK
  Applying account.0002_email_max_length... OK
  Applying sites.0001_initial... OK
  Applying sites.0002_alter_domain_unique... OK
  Applying socialaccount.0001_initial... OK
  Applying socialaccount.0002_token_max_lengths... OK
  Applying socialaccount.0003_extra_data_default_dict... OK

エラーが出なければ設定に問題はなく、これでdjango-allauthの設定は完了です。

管理者ページでの設定変更

管理者ページへアクセスしてみると、新しいモデルクラスが登録されているのがわかります

設定するのは、

  1. サイト
  2. メールアドレス

の2つになります

サイト」へ進みます

「example.com」となっているドメイン名をクリックし自身のドメインへ変更しましょう

ユーザー登録のEメール認証で記載されます

この2箇所で実行しておきたいことがありますので、下記の通り進めてください。

メールアドレスクラスでの変更

「メールアドレス」へ進み、スーパーユーザーとして登録しているあなたのアドレスを登録しておきましょう。

サイト名の変更

「サイト」へ進み、サイト名を自身のドメイン名に変更しておく必要があります。

これを行わないと、ユーザー登録時に送られるメールで不具合が起きてしまいます。

まとめ

以上で設定は完了しました。当記事の内容をまとめます。

django-allauthを使ってユーザー認証を構築するには下記の3ステップで進めます。

  1. django-allauthのインストール
  2. django-allauthの設定方法
  3. 管理ページでの行う設定

念の為、ローカルサーバーを立ち上げログインページへアクセスしてみます

http://localhost:8000/accounts/login/

ユーザー登録ページは下記のとおりです。

http://localhost:8000/accounts/signup/

その他のページも公式ドキュメントに詳しく書いてありますのでご確認ください

ただし、問題が発生する場合もあります。

別記事でも記載した通り、オリジナルのユーザーモデルクラスを作りEメールアドレスのログイン方法へ変更している場合、下記のようなエラーページに飛んでしまいます。

該当してしまった方は下記ページでEメールでのログイン方法へ変更している場合のdjango-allauth設定方法について解説していますので、ご覧ください。

当ブログでは、日報アプリ開発を通じて、Webアプリを一から開発し公開するまでを初学者の方でもわかるようにと記事を連載しています

「Djangoでのアプリ開発を学びたい!」
「Djangoで開発したアプリをWebで公開するにはどうするの?」

という方は必見です!

【Django】チュートリアル|日報アプリの開発から公開まで
Djangoのチュートリアルをお探しですか?具体的に「手を動かして作ってみたい!」という方へ向けて、誰でもできる簡易的な日報アプリの開発を通じて、Djangoの様々な機能に触れていくシリーズとなっています。PythonでWebアプリを作りたい方、必見の記事となります!

タイトルとURLをコピーしました