使用django自带的模型类
from django.db import models # 数据库模型类的包
from django.contrib.auth.models import AbstractUser,UserManager as _UserManger
# djang已经封装好的用户登录,验证和各种授权操作的模型类,UserManger是关于User用户创建的方法定义好的管理类
# 重写user管理类关于超级用户创建的方法,默认创建用户需要传参,用户名,email和密码
# 这里将给email一个默认值为None,然后直接通过super()重用父类的方法
class UserManger(_UserManger):
def create_superuser(self, username, password, email=None, **extra_fields):
# rewrite create_superuser ,use telephone_number instead of email
super().create_superuser(username=username, password=password, email=email, **extra_fields)
# 配合管理类,这里需要创建手机号作为登陆验证,然后通过REQUIRED_FILES指定为注册时填写的参数,原本为email
# verbose_name为执行createsuperuser时,控制台输出的名字,error_messages为使用已经注册的手机号注册时提示的报错,key的unique指的是违反唯一性的后面的value作为报错输出
# email_active参数作何作用暂未可知
# class Meta中的db_table为定义该模型类创建数据表的名称,verbose_name为表的别名,后缀有plural的为复数别名,如果别名为中文,别名和复数别名一般取一致
# __str__方法为print模型类时输出的内容
class User(AbstractUser):
telephone_number = models.CharField(max_length=11, unique=True, verbose_name='telephone_number',
help_text='telephone_number', error_messages={'unique':'The phone number is existed'})
email_active = models.BooleanField(default=False, verbose_name='email status')
objects = UserManger()
REQUIRED_FIELDS = ['telephone_number'] # 指定注册账户
class Meta:
db_table = 'tb_users'
verbose_name = '用户表'
verbose_name_plural = verbose_name
def __str__(self):
return self.username
除此之外,还需要在settings文件中增加AUTH_USER_MODEL = ‘users.USER’
该参数不知道是否为APP名字加上模型类的名字,目前看应该是这样