- 创建user app
> django-admin startapp user
- 添加
user.app
到settings.py
-> INSTALLED_APPS
中
- 修改user.models.py文件
from django.contrib.auth.base_user import BaseUserManager, AbstractBaseUser
from django.contrib.auth.models import PermissionsMixin
from django.db import models
# Create your models here.
class MyUserManager(BaseUserManager):
def _create_user(self, username, password, **kwargs):
"""
Create and save a user with the given username, email, and password.
"""
if not username:
raise ValueError('The given username must be set')
if not password:
raise ValueError('The given password must be set')
userIns = self.model(username=username, **kwargs)
userIns.set_password(password)
userIns.save(using=self._db)
# UserProfile.objects.create(user=userIns)
return userIns
def create_user(self, username: str, password: str = None, **kwargs):
kwargs.setdefault('is_superuser', False)
return self._create_user(username, password, **kwargs)
def create_superuser(self, username: str, password: str = None, **kwargs):
kwargs.setdefault('is_superuser', True)
if kwargs.get('is_superuser') is not True:
raise ValueError('Superuser must have is_superuser=True.')
return self._create_user(username, password, **kwargs)
# Create your models here.
class User(AbstractBaseUser, PermissionsMixin):
username = models.CharField(max_length=16, unique=True, blank=False, null=False)
# 是否有登录后台Admin的权限
is_staff = models.BooleanField(default=False)
# 设置自定义模型类 唯一标识用户的字段.
USERNAME_FIELD = 'username'
# 定义通过命令行 `python manage.py createsuperuser` 时必填的字段
objects = MyUserManager()
class Meta:
db_table = 'user_tbl'
- 编辑
settings.py
文件, 增加自定义用户模型类配置
AUTH_USER_MODEL = 'user.User'
- 执行模型迁移命令
python manage.py makemigrations
python manage.py migrate