zoukankan      html  css  js  c++  java
  • 0008 Django工程配置(05 系统认证模型配置)

      Django提供了全套认证系统,本项目虽然使用JWT认证,但也是继承于Django认证模型。

      我们本节要解决的问题是:Django提供了用户模型,但不完善,我们需要的一些字段没有,我们需要增加字段。Django框架不推荐自己建用户表,因为如果自建用户表,所有的认证系统将不能使用。

      主要需求有两点:

      第一点:要能够继承Django用户模型,并增加字段

      第二点:所有模型,都需要增加创建日期和更新日期两个字段。

      解决办法如下:

    1 创建抽象模型

      创建抽象模型,包括创建时间和更新时间两个字段,工程中所有的模型都可以继承这个抽象模型,会自动增加这两个字段。  

      在GeneralTools目录下,创建一个BaseModel.py文件,内容如下:

    from django.db import models
    
    
    class BaseModel(models.Model):
        create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间', help_text='创建时间')
        update_time = models.DateTimeField(auto_now=True, verbose_name='更新时间', help_text='更新时间')
    
        class Meta:
            # 说明这个类是一个抽象模型类,在迁移的时候不会生成表
            abstract = True
    

    2 创建用户模型

      创建一个用户模型,不但继承Django用户模型,而且继承抽象模型。

      在Applications/Organizations/models.py中,增加一个模型。

    from django.db import models
    from django.contrib.auth.models import AbstractUser
    
    from GeneralTools.BaseModel import BaseModel
    
    
    class UserInfo(AbstractUser, BaseModel):
        openid = models.CharField(max_length=30, unique=True, verbose_name='微信openID', help_text='微信openID')
        mobile = models.CharField(max_length=11, unique=True, verbose_name='手机号', help_text='手机号')
        # 默认的username是有唯一约束的,暂存入手机号。另增一个name字段存放姓名(微信昵称)
        name = models.CharField(max_length=30, null=True, blank=True, verbose_name='姓名', help_text='姓名')
        photo_url = models.ImageField(upload_to='user', null=True, blank=True, verbose_name='头像', help_text='头像')
    
        def __str__(self):
            return self.name
    
        class Meta:
            db_table = 'UserInfo'
            verbose_name_plural = '001  用户信息表'
    

    3 指定用户认证模型

      在settings.py中增加AUTH_USER_MODEL参数,用于指定用户认证模型。

      特别注意的是:用户认证模型的格式必须是:App名.模型名,APP名前不能加路径。而且,APP下的apps.py中的路径要正确。否则执行数据迁移要出错!

    AUTH_USER_MODEL = 'Organizations.UserInfo'
    

    4 执行数据迁移

      在PyCharm Terminal下执行:

    python manage.py makemigrations
    python manage.py migrate
    

    5 数据库中查看表结构

      可以看到,我们新增加的字段,都增加好了。

  • 相关阅读:
    字符串初始化、查找字符+获取字符
    冒泡排序
    JAVA中值类型和引用类型的不同?
    二维数组初始化,属性,遍历,输出各元素总和。
    数组定义属性遍历循环,输出最大数
    for穷举,叠代练习
    HTML--Boby部分之<a>标签
    HTML--Boby内标签之多行文本及下拉框
    HTML--Boby部分Input之重置
    HTML--Boby部分Input之上传文件
  • 原文地址:https://www.cnblogs.com/dorian/p/12410886.html
Copyright © 2011-2022 走看看