解析admin的源码
第一步:项目启动,加载settings文件中的 INSTALLED_APPS
里边有几个app就加载几个,按照注册顺序来执行。
第二步:其中加载的是admin.py,加载每一个app下的admin.py文件
第三步:执行代码
第四步:看admin.site走的流程
咱走一下源码
总结一下:
第五步:执行register方法
admin.site.register(Book, BookAdmin)
admin.site.register(Publish)
class ModelAdmin(BaseModelAdmin):pass def register(self, model_or_iterable, admin_class=None, **options): if not admin_class: admin_class = ModelAdmin # Instantiate the admin class to save in the registry self._registry[model] = admin_class(model, self)
注册就结束了!
补充一下:
在每一个app的admin .py中加上
print(admin.site._registry) # 执行结果?
app01:
app02: