Django 3におけるカスタムユーザーモデルの例について詳細を説明する。


紹介する
こんにちは、この文章ではDjango 3にユーザーモデルを作成し、Django Adminのデフォルト登録機能も変更します。私たちはメールとパスワードでログインします。
動機
私は自分のアプリケーションのために「ユーザー定義」を作成しなければなりません。モデルを作ることができますが、問題はクリッテッパーコマンドが正常に動作しません。それを調整するために、大量の研究をしなければなりません。問題は当時の資源の大半が時代遅れになっていたので、この文章を書くことにしました。
GitHub倉庫を作りましたので、よろしければ、そのまま使ってもいいです。
始めましょう
まず、Django Projectを作成し、usersというアプリケーションを作成します。
今から私たちはユーザーアプリケーションでmodels.pyファイルの編集を開始できます。
編集する前に理論的な準備をしておきます。
Djangoの中のマネージャーは何ですか?
Managerは、このインターフェースを通じてデータベースクエリ操作をDjangoモデルに提供するインターフェースです。Djangoアプリの各モデルには少なくとも一つのManagerがあります。Django Docs
簡単に言えば、マネージャーはモデルを管理する方法を提供してくれました。モデルをManager類のサブクラスにすることで実現できます。マネージャクラスは、クリッテッパーなどのコマンドを編集できるところです。
今はmodels.pyを開いて、下記のコードを入れます。

from django.db import models
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, PermissionsMixin


class UserManager(BaseUserManager):
 def create_user(self, email, password=None):
  """
  Creates and saves a User with the given email and password.
  """
  if not email:
   raise ValueError('Users must have an email address')

  user = self.model(
   email=self.normalize_email(email),
  )

  user.set_password(password)
  user.save(using=self._db)
  return user

 def create_superuser(self, email, password):
  """
  Creates and saves a superuser with the given email and password.
  """
  user = self.create_user(
   email,
   password=password,
  )
  user.is_staff = True
  user.is_superuser = True
  user.save(using=self._db)
  return user


class CustomUser(AbstractBaseUser, PermissionsMixin):
 name = models.CharField(max_length=50, default='Anonymous')
 email = models.EmailField(max_length=100, unique=True)

 username = None

 USERNAME_FIELD = 'email'
 REQUIRED_FIELDS = []

 session_token = models.CharField(max_length=10, default=0)

 active = models.BooleanField(default=True)
 # a admin user; non super-user
 is_staff = models.BooleanField(default=False)
 is_superuser = models.BooleanField(default=False) # a superuser

 created_at = models.DateTimeField(
  auto_now_add=True, blank=True, null=True)
 updated_at = models.DateTimeField(auto_now=True)

 objects = UserManager()

ここで注意する一番重要なことはis_です。スタッフとis_superuser属性その中に入力ミスがあるとデバッグが難しくなります。
私たちはここで何をしましたか?
私たちは既に私たちのユーザーモデルを管理しています。その中で、私達は2つの関数を作って、それぞれcreate_と言います。userとcreate_superuser
名前の通りに考えて、create(u)ユーザーは新しいユーザーを作成し、is_を通じてスタッフとis_superuserはtrueに設定してcreate_を使用します。スーパーユーザーを作成します。
社長の後で、私達は通常のモードがあります。
私たちはユーザー名をnoneに設定します。私たちはユーザー名を含めたくないからです。
その中のUSERNAME_FIELDは私たちが「電子メール」と宣言しています。これは唯一のはずです。
session_tokenはオプションフィールドです。私はそこにいます。私のカスタムトークンを作っています。
models.pyの最後の行はCustomeUserがUserManagerの対象であることを示しています。
大事なこと
モデルを作成したら、settings.pyファイルを開き、その中に一行を追加します。

AUTH_USER_MODEL = 'users.CustomUser'
DjangoはAUTH_を通過させます。USER_MODEL設定は、デフォルトのユーザーモデルをカバーするために、カスタムモデルの値を提供します。この点線はDjangoアプリケーションの名前を説明しています。APPSでは、ユーザーモデルとしてDjangoモデルの名前を使用したいです。Djangoドキュメント
最後のステップ
移動コマンドを実行してスーパーユーザを作成することができます。

py manage.py makemigrations
py manage.py migrate
py manage.py createsuperuser
メールとパスワードを要求します。詳細に説明する。
管理者に登録することを忘れないでください。

admin.site.register(CustomUser)
サーバを実行して、管理パネルにメールとパスワードでログインできます。
何かアドバイスがありましたら、教えてください。
git:https://github.com/theshubhagrwl/django_customアメリカ.アプリ
締め括りをつける
ここでは、Django 3のユーザーモデルに関する記事を紹介します。これまでの記事を検索したり、下記の関連記事を見たりしてください。これからも応援してください。