【Django】allauthを使って承認機能を実装 (新規登録・ログイン・ログアウト...ect)
【前提条件】
-----------------------------------------------------------------------------
djangoのインストールが完了しプロジェクトディレクトリとアプリケーションディレクトリの作成、setting.pyにアプリケーションの登録までが
完了していること
-----------------------------------------------------------------------------
【確認事項】
本記事では、pythonのバージョンが3.0.0以上の環境で開発しているので、
コマンドは全てpython3 manage.py〜の表記にしています。
バージョンに合わせてpython3 manage.py 〜 →python manage.py
に読み変えてください。
【参考】
1. カスタムユーザーモデルのモデルのアプリケーション作成
まずは、allauth関連の前にプロジェクトディレクトリを作成しておく。
もうすでに作ってたら不要。
もし作っていなければ下記にて作る。
(今回は、my_projectという名前にした)
$ django-admin startproject my_project
続いて、allauthを扱うための、新規のアプリケーションディレクトリを作成する。
今回は"accounts"という名前にする。
以下のコマンドを実行
$ python3 manage.py startapp accounts
"accounts"ディレクトリが作成されたことを確認したら、
setting.pyにアプリケーションの登録をする。
2. allauthのインストール
下記のコマンドでインストール
$ pip install django-allauth
3. ユーザー作成を担うメソッドを持ったクラスを実装
"accounts"ディレクトリの中のmodels.pyに下記のコードを追記。
UserManager, AbstractUserをインポートすることを忘れないように注意。
from django.contrib.auth.models import UserManager, AbstractUser
class CustomUserManager(UserManager):
use_in_migrations = True
def _create_user(self, email, username, password, **extra_fields):
# create_user と create_superuser の共通処理
if not email:
raise ValueError('email must be set')
if not username:
raise ValueError('username must be set')
user = self.model(email=email, username=username, **extra_fields)
user.set_password(password)
user.save(using=self._db)
return user
def create_user(self, username, email=None, password=None, **extra_fields):
if not email:
raise ValueError('email must be set')
if not username:
raise ValueError('username must be set')
extra_fields.setdefault('is_staff', False)
extra_fields.setdefault('is_superuser', False)
return self._create_user(email, username, password, **extra_fields)
def create_superuser(self, username, email=None, password=None, **extra_fields):
extra_fields.setdefault('is_staff', True)
extra_fields.setdefault('is_superuser', True)
if extra_fields.get('is_staff') is not True:
raise ValueError('Superuser must have is_staff=True.')
if extra_fields.get('is_superuser') is not True:
raise ValueError('Superuser must have is_superuser=True.')
return self._create_user(email, username, password, **extra_fields)
ここから先は
¥ 900
Amazonギフトカード5,000円分が当たる
この記事が気に入ったらチップで応援してみませんか?