admin

 

 

执行顺序 : Admin

 

  1. 执行admin.py,导入models

第一次进来的时候,先创建admin.site对象(如果下次再有引入,不会重新创建)

  1. 拿到对象后执行该对象下的register()方法
  • 目的是将 注册的类 添加到_registry{}中
  1. admin.site是实例化AdminSite的对象
  1. 实例化完成后,执行__init__方法
拿到一个_registry = {}
  1. 再看AdminSite类下的register()方法,里面执行的是啥?
  1. register()可以传进两个参数,第二个参数默认为None
  • 如果我们自己定义了一个RoleConfig(admin.ModelAdmin):类, 它会优先调用自定义的类.

 

 

  • 调用register后.会传进去一个_registry
  • 你注册一个它就会在_registry里面生成一个键值对
  • _registry = {

models.Role : ModelAdmin(models.Role,admin.site),

}

  • _registry = {

models.Role : RoleConfig(models.Role,admin.site),

}    // 它会调用内部的一个 list_display

 

  • 咱们综上所有都是为了生成 _registry 这个字典

 

 

=====================================================================================

 

接下来,通过我们访问admin 可以看到. 

  1. 注册过的每一张表,都生成若干张表.在这里咱们默认为 增删改查四张表
  • 请求过来后,咱们应该执行视图.
  • 当运行程序时,
  1. 会先找到每一个APP中的admin.py文件,并加载(记得要注册哦)
  2. 创建admin.site中的对象,执行register方法.

 

 

  1. 接下来来到urls,在此处执行如图.   再次调用admin.site的urls
  1. 这个urls看起来是个属性对不对.  别急…给你图
  • 看到@property没
  • 伪造成属性,其实它的本质是个方法哦
  1. 看它的返回值,三个参数用逗号隔开.  它其实就是返回了一个元组.
  • 该元组下,有三个参数,第一个参数是个函数. 我们点进去看看

 

  • 由此可见, 第一个元素返回了一个列表
    • 手动展示一下
  1. 接下来我们来看看这个列表是个啥????

 

  1. 来, 看完这个urlpatterns是什么之后,咱在这个get_urls()里面继续看

 

  • 这里可以看到, 在咱们拿到的那个字典里面,疯狂循环对不对.
  • 为每一个类生成url

 

  • 这个就是他的前缀 (应用名,类名)
    • 观察这个图的最后,有个include(model_admin.urls),有没有觉得很眼熟,可是又有点不对劲…
    • 咱们之前执行过一次admin.site.urls, 这里又来了个model_admin.urls
    • 什么鬼???  莫急…   我们点进去瞅瞅先
      • 这里的urls 是 ModelAdmin类下的方法哦,可不能混淆
        • 再进去看看这里的get_urls()是什么
        • 是的, 增删改查!!!

 

总结 :   django admin url生成的本质!!!  

  • 读取_regstry 字典里面的数据,为字典里的每一个类,生成了四个url

转载于:https://www.cnblogs.com/ugfly/p/8035740.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值