使用Django3如何实现自定义用户模型-创新互联
使用Django3如何实现自定义用户模型?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

首先,创建一个Django Project并创建一个名为users的应用程序
现在我们可以开始在用户应用程序中编辑models.py文件了
在进行编辑之前,先做一些理论上的准备。
Django中的经理是什么?
Manager是一个接口,通过该接口可以将数据库查询操作提供给Django模型。 Django应用程序中的每个模型至少都有一个Manager。-Django Docs
简单地说,经理为我们提供了一种管理模型的方法。 我们可以通过使模型成为Manager类的子类来实现此目的。 管理器类是可以编辑诸如createsuperuser之类的命令的地方。
现在打开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() 本文标题:使用Django3如何实现自定义用户模型-创新互联
转载注明:http://www.scyingshan.cn/article/cdjdoi.html


咨询
建站咨询
