码迷,mamicode.com
首页 > 其他好文 > 详细

Django框架之admin管理后台

时间:2019-11-26 22:42:37      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:word   中间   tab   setting   mail   import   认证   table   扩展   

一、扩展auth_user表的字段

我们知道auth_user表是在执行数据库迁移命令时自动创建的

django中间件帮我们在请求来的时候通过auth_user表进行用户身份校验

那问题来了,我们如何改auth_user表呢?增加或删除字段?

1.1 通过AbstractUser类来进行扩展

  1. 首先导入auth认证组件中的AbstractUser类
    from django.contrib.auth.models import AbstractUser

  2. 自己写一个类 继承原来的auth_user类

    注意:你继承了AbstractUser之后 你自定义的表中 字段不能跟原有的冲突

'''扩展 auth认证组件中 auth_user表'''
from django.contrib.auth.models import AbstractUser
class My_User(AbstractUser):
"""
强调 你继承了AbstractUser之后 你自定义的表中 字段不能跟原有的冲突
"""
    phone = models.BigIntegerField()
    avatar = models.FileField()
    register_time = models.DateField(auto_now_add=True)
  1. 在settings配置文件中 告诉django使用你新建的类来替代auth_user表

    固定语法: AUTH_USER_MODEL = ‘应用名.表名‘

    坑点:不能在以有库上直接在迁移一次数据库。只能用新的数据库,并且没有数据库迁移记录。

'''settings.py'''

# auth自定义表配置
AUTH_USER_MODEL = 'app01.My_User'
# 固定语法: AUTH_USER_MODEL = '应用名.表名

通过上面的方式 继承的表 还可以继续使用auth模块所有的功能

再次注意:

一旦我们指定了新的认证系统所使用的表,我们就需要重新在数据库中创建该表,而不能继续使用原来默认的auth_user表了。

1.2 对模型表进行配置

# 继承系统的user表
class UserInfo(AbstractUser):
    mobile = models.CharField(max_length=11, unique=True)

    class Meta:
        # 更改数据库的表名
        db_table = 'user'
        # 更改后台显示的表名
        verbose_name_plural = '系统用户表'

    def __str__(self):
        return self.username

1.3 通过Admin.py将表注册到后台管理页面

'''admin.py'''

from django.contrib import admin

# Register your models here.
from app01 import models
# 注册models中的八张表
admin.site.register(models.UserInfo)
admin.site.register(models.Blog)
admin.site.register(models.Article)
admin.site.register(models.Tag)
admin.site.register(models.Category)
admin.site.register(models.Article_Tag)
admin.site.register(models.Comment)
admin.site.register(models.UpAndDown)

# admin注册自定义User表:密文操作密码
from django.contrib.auth.admin import UserAdmin
class UserInfo(UserAdmin):
    add_fieldsets = (
        (None, {
            'classes': ('wide',),
            # 添加用户界面可操作的字段
            'fields': ('username', 'password1', 'password2', 'mobile', 'email', 'is_staff', 'is_active'),
        }),
    )
    list_display = ('username', 'mobile', 'email', 'is_staff', 'is_active')

# 明文操作密码,admin可视化添加的用户密码都是明文,登录时用的是密文,所以用户无法登录
# admin.site.register(models.User)
admin.site.register(models.UserInfo, UserInfo)

Django框架之admin管理后台

标签:word   中间   tab   setting   mail   import   认证   table   扩展   

原文地址:https://www.cnblogs.com/XuChengNotes/p/11938797.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!