在Django v3中,编写自定义用户模型和管理器可以通过以下步骤完成:
AUTH_USER_MODEL
设置,并将其值设置为您想要使用的自定义用户模型的路径。例如,如果您的自定义用户模型位于myapp.models
模块中,并且该模型名为CustomUser
,则设置为AUTH_USER_MODEL = 'myapp.CustomUser'
。AbstractBaseUser
类,并实现必要的字段和方法。例如:from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, PermissionsMixin
from django.db import models
class CustomUserManager(BaseUserManager):
def create_user(self, email, password=None, **extra_fields):
# 创建普通用户
if not email:
raise ValueError('The Email field must be set')
email = self.normalize_email(email)
user = self.model(email=email, **extra_fields)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, email, password=None, **extra_fields):
# 创建超级用户
extra_fields.setdefault('is_staff', True)
extra_fields.setdefault('is_superuser', True)
return self.create_user(email, password, **extra_fields)
class CustomUser(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(unique=True)
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
objects = CustomUserManager()
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['first_name', 'last_name']
def get_full_name(self):
return f'{self.first_name} {self.last_name}'
def get_short_name(self):
return self.first_name
AUTH_USER_MODEL
设置为您的自定义用户模型的路径。例如,AUTH_USER_MODEL = 'myapp.CustomUser'
。python manage.py makemigrations
和python manage.py migrate
命令,以创建并应用数据库迁移。现在,您已经成功地创建了自定义用户模型。您可以使用Django提供的内置视图和表单来处理用户认证和管理,或者根据需要自定义视图和表单。
关于自定义用户模型的优势是,您可以根据项目的特定需求和逻辑来定义用户模型的字段和方法,使其更加灵活和个性化。
自定义用户模型的应用场景包括但不限于:
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云