zoukankan      html  css  js  c++  java
  • 潭州课堂25班:Ph201805201 django 项目 第七课 用户模型设计 (课堂笔记

     在 user 的应用中的 models.py:

    导入 dango 自带的用户模型

    from django.contrib.auth.models import AbstractUser,UserManager as _UserManager

    在主目录下的配置文件中加入:
    # 自定义用户模型
    AUTH_USER_MODEL = 'users.Users'

    查看类的结构:

    查看类的继承关系,

     用户模型设计 :

    from django.db import models
    from django.contrib.auth.models import AbstractUser, UserManager as _UserManager
    
    
    class UserManager(_UserManager):
        """
        define user manager for modifing 'no need email'
        when 'python manager.py createsuperuser '
    
        """
    
        def create_superuser(self, username, password, email=None, **extra_fields):
            super(UserManager, self).create_superuser(username=password,
                                                      password=password, email=email, **extra_fields)
    
    
    class Users(AbstractUser):
        """
        add mobile、email_active fields to Django users models.
        """
        objects = UserManager()
        # A list of the field names that will be prompted for
        # when creating a user via the createsuperuser management command.
        REQUIRED_FIELDS = ['mobile']
    
        # help_text在api接口文档中会用到
        # verbose_name在admin站点中会用到
        mobile = models.CharField(max_length=11, unique=True, verbose_name="手机号", help_text='手机号',
                                  error_messages={'unique': "此手机号已注册"}  # 指定报错的中文信息
                                  )
        email_active = models.BooleanField(default=False, verbose_name='邮箱验证状态')
    
        class Meta:
            db_table = "tb_users"   # 指明数据库表名
            verbose_name = "用户"    # 在admin站点中显示的名称
            verbose_name_plural = verbose_name  # 显示的复数名称
    
        def __str__(self):  # 打印对象时调用
            return self.username
    

      

    在settings.py文件中添加如下配置:

    # 自定义用户模型

    AUTH_USER_MODEL = 'users.Users'


    这样就为 django 指定用自己的用户模型


     

     查看数据库:

    在这个项目中,不需要邮箱地址, 而在继承了这个类后,有个邮箱 地址的字段,有手机号字段,

    所以要对模型进行修改,

    继承并重写  UserManager

    from django.db import models
    from django.contrib.auth.models import AbstractUser,UserManager as _UserManager
    #
    # # Create your models here.
    
    class UserManager(_UserManager):
        '''
        重写 UserManager
        '''
        def create_superuser(self, username, password, email=None, **extra_fields):
            super(UserManager, self).create_superuser(username=password,
                                                      password=password, email=email, **extra_fields)
    
    
    class Users(AbstractUser):
        '''
        在 AbstractUser 之上添加手机号字段
        '''
        objects = UserManager()
        REQUIRED_FIELDS = ['mobile']
        mobile = models.CharField(max_length=11, unique=True, verbose_name="手机号", help_text='手机号',
                              error_messages={'unique': "此手机号已注册"}  # 指定报错的中文信息
                              )
        email_active = models.BooleanField(default=False, verbose_name='邮箱验证状态')
    
        # 内部类
        class Meta:
            db_table = "tb_users"                           # 指明数据库表名
            verbose_name = "用户"                             # 在admin站点中显示的名称
            verbose_name_plural = verbose_name                 # 显示的复数名称
    
        def __str__(self):  # 打印对象时调用
            return self.username
    

      

    尝试 进行创建超级用户操作:  createsuperuser

    补充:

    对 base.html 文件中的路径对应修改:

  • 相关阅读:
    基于摸板匹配的目標跟蹤算法
    spoj 2713 Can you answer these queries IV
    zoj 3633 Alice's present
    hdu 3642 Get The Treasury
    poj 1195 Mobile phones
    poj 2760 End of Windless Days
    zoj 3540 Adding New Machine
    spoj 1716 Can you answer these queries III
    spoj 1043 Can you answer these queries I
    spoj 2916 Can you answer these queries V
  • 原文地址:https://www.cnblogs.com/gdwz922/p/10061993.html
Copyright © 2011-2022 走看看