诚意
诚意如你,当一诚的态度对待

导航

 

 

一:启动

 

当启动Django时,会执行  setting.py  中的组件

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'school.apps.SchoolConfig',
]

 

 

也就是会扫描admin组件

from django.contrib import admin

 

 

from django.contrib.admin.decorators import register
from django.contrib.admin.filters import (
    AllValuesFieldListFilter, BooleanFieldListFilter, ChoicesFieldListFilter,
    DateFieldListFilter, FieldListFilter, ListFilter, RelatedFieldListFilter,
    RelatedOnlyFieldListFilter, SimpleListFilter,
)
from django.contrib.admin.helpers import ACTION_CHECKBOX_NAME
from django.contrib.admin.options import (
    HORIZONTAL, VERTICAL, ModelAdmin, StackedInline, TabularInline,
)
from django.contrib.admin.sites import AdminSite, site
from django.utils.module_loading import autodiscover_modules

__all__ = [
    "register", "ACTION_CHECKBOX_NAME", "ModelAdmin", "HORIZONTAL", "VERTICAL",
    "StackedInline", "TabularInline", "AdminSite", "site", "ListFilter",
    "SimpleListFilter", "FieldListFilter", "BooleanFieldListFilter",
    "RelatedFieldListFilter", "ChoicesFieldListFilter", "DateFieldListFilter",
    "AllValuesFieldListFilter", "RelatedOnlyFieldListFilter", "autodiscover",
]


def autodiscover():
    autodiscover_modules('admin', register_to=site)   #这句话就是扫描每个组件中的admin.py文件


default_app_config = 'django.contrib.admin.apps.AdminConfig'

 

 

可以看下from django.contrib.admin.sites import AdminSite, site
site = DefaultAdminSite()  #单例模式,共用一个对象

 

 

 

总结:

启动Django加载admin组件

  (1)from django.contrib.admin.sites import AdminSite, site  这里有一个单例对象

        site = DefaultAdminSite()

  (2)扫描每个组件下的admin.py   

    autodiscover_modules('admin', register_to=site)

二:注册

 扫描admin.py文件

 

from django.contrib import admin


class PublishConfig(admin.ModelAdmin):
    list_display = ['name']

admin.site.register(Publish,PublishConfig)  #admin.site就是那个单例模式,所以这些都是公用一个对象
admin.site.register(Author)

 

posted on 2019-01-13 10:13  诚意  阅读(257)  评论(0编辑  收藏  举报