DJANGO项目笔记一(使用django自带的模型类AbstactUser和模型管理类UserManager)

使用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名字加上模型类的名字,目前看应该是这样

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值