(上)django-xadmin路由分发系统、系统核心功能----类视图 的动态生成过程(源码解读)

本文详细介绍了xadmin的路由系统和我们常见的类视图(比如List、Create、Retrieve、Update类视图)的动态生成过程

 

1、django会通过总路由中的来注册xadmin所有的视图函数。

2、xadmin.sites.urls里面发生了什么呢?

xadmin.sites.urls中的urls函数中调用site. get_urls()

3、get_urls()会先遍历self._registry_views然后将url添加到urlpatterns中,并将xurlpatterns返回给django总路由

4、self._registry_views是哪里来的呢?通过sites.registry_view函数添加的。

而registry_view函数就在xadmin.views.__init__.py中被调用了。

5、get_urls()还会遍历self._registry,将url添加到urlpatterns

self._registry是哪里来的呢?通过sites.registry函数添加的

而registry函数在哪里被调用的呢?就是在你注册模型的admin管理类时。

装饰器注册:

函数注册:

6、url都注册完成了,那么类视图是在什么时候被创建的呢

就是在get_urls()遍历self._registry_views和self._registry生成urlpatterns时,

就是这两个标注的函数创建的

点进去看下,先通过get_view_class函数获得类视图名字,然后通过as_view注册:

在详细看下get_view_class这个方法里面,它将很多内容拼接到一起组成了最终的类视图名字new_class_name

这个类视图具有的属性和方法就不在深入探究了(其实也在这个方法中实现的),然后将这个类视图添加到了

sites. AdminSite._admin_view_cache类属性中。

7、最后我们再来看下_admin_view_cache这个类属性,也是所有的类视图,我只截取部分:

前面是xadmin自动生成的类视图,例如password相关的、login/logout相关的等等

Departments是我自己写的模型,有看到create、list、edit、delete等相关的类视图了吧。

 

8、最后的最后,随便看其中一个类视图,以DepartmentsList类视图为例:

9、这些类视图的属性是如何被赋予的呢,可以看我的这篇文章,里面详细介绍了xadmin的所有类视图及功能。https://blog.csdn.net/bocai_xiaodaidai/article/details/94558390

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值