当启动Django时,会执行 setting.py 中的组件django
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'school.apps.SchoolConfig', ]
也就是会扫描admin组件session
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() #单例模式,共用一个对象
总结:app
启动Django加载admin组件spa
(1)from django.contrib.admin.sites import AdminSite, site 这里有一个单例对象code
site = DefaultAdminSite()对象
(2)扫描每一个组件下的admin.py blog
autodiscover_modules('admin', register_to=site)
扫描admin.py文件it
from django.contrib import admin class PublishConfig(admin.ModelAdmin): list_display = ['name'] admin.site.register(Publish,PublishConfig) #admin.site就是那个单例模式,因此这些都是公用一个对象 admin.site.register(Author)