Django--组件--admin组件的源码


一:启动

当启动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)

优质内容筛选与推荐>>
1、PostgreSQL查询数据(基本查询)
2、PHP中遍历stdclass object 及 json 总结[中国航天神舟十号以json形式向地面返回数据]
3、ios本地文件内容读取,.json .plist 文件读写
4、PHP系统左侧菜单栏的管理与实现
5、分布式文件系统KFS源码阅读与分析(四):RPC实现机制(KfsClient端)


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn