一、什么是admin管理后台
  • django提供了比较完善的后台管理数据库的接口,可供开发过程中调用和测试使用

  • django会搜集所有已注册的类模型,为这些模型类提供数据管理界面,供开发者使用

  • admin管理后台登录地址:http://127.0.0.1:8000/admin

    13. Django基础:admin后台管理_数据库

  • 管理界面

    13. Django基础:admin后台管理_字段_02

二、admin配置步骤
  • 创建后台管理账号 该账号为管理后台最高权限账号

    $ python3 manage.py createsuperuser
    

    13. Django基础:admin后台管理_字段_03

三、管理系统

可以在后台配置用户和组,配置权限等

13. Django基础:admin后台管理_自定义_04

13. Django基础:admin后台管理_自定义_05

四、注册自定义模型类

若要自己定义的模型类也能在/admin后台管理界面中显示和管理,需要将自己的类注册到后台管理界面中

注册步骤:

  1. 在应用app的admin.py中导入注册要管理的模型models类,如:

    from .models import Book
    
  2. 调用admin.site.register方法进行注册,如:

    admin.site.register(自定义模型类)
    

13. Django基础:admin后台管理_数据库_06

注册完成后,查看管理界面:

13. Django基础:admin后台管理_数据库_07

修改的时候,显示的样式和__str__中定义的一样

13. Django基础:admin后台管理_数据库_08

五、模型管理其类

作用:为后台管理界面添加便于操作的新功能

说明:后台管理器类必须继承自django.contrib.admin里的ModelAdmin类

使用方法:

  1. 在<应用app>/admin.py里定义模型管理器类

    class XXXXManager(admin.ModelAdmin):
    	....
    
  2. 绑定注册模型管理器和模型类

    from django.contrib import admin
    from .models import *
    admin.site.register(YYYY, XXXXManage) # 绑定YYYY模型类与管理器类XXXXManager
    

案例:

# file : bookstore/admin.py
from django.contrib import admin
from .models import Book, Author
# Register your models here.

admin.site.register(Book)
admin.site.register(Author)


class BookManager(admin.ModelAdmin):
    # 列表页显示哪些字段的列
    list_display = ['id', 'title', 'price', 'market_price']
    # 点击哪一列可以进入修改界面,默认是ID
    list_display_links = ['title']
    # 添加过滤器
    list_filter = ['pub']
    # 添加搜索框
    search_fields = ['title']
    # 添加可在列表页编辑的字段
    list_editable = ['price']
    
    
admin.site.register(Book, BookManager)

配置完成后,后台管理系统界面:

官方文档:https://docs.djangoproject.com/en/2.2/ref/contrib/admin/

六、再谈Meta类

通过Meta内嵌类,定义模型类的属性,用法如下:

class Book(models.Model)
	title = CharField(...)
    
    class Meta:
        1. db_table = '数据表明'
        	- 该模型所用的数据表的名称。(设置完成后需要立马更新同步到数据库)
        2. verbose_name = '单数名'
        	- 给模型对象一个易于理解的名称(单数),用于显示在/admin管理界面中
        3. verbose_name_plural = '复数名'
        	- 该对象复数形式的名称(复数),用于显示在/admin管理界面