CBV-2-CBV流程-view源码解析-面向对象-继承

Posted yimiflh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CBV-2-CBV流程-view源码解析-面向对象-继承相关的知识,希望对你有一定的参考价值。

 

CBV-2-CBV流程-view源码解析-面向对象-继承

 

CBV,基于反射实现根据请求方式不同,执行不同的方法。

请求流程:view源码解析

1.urls.py :请求一定来执行视图下的as_view方法。

技术分享图片

2.views.py 视图内没有as_view方法,则找父级的as_view方法。

技术分享图片

 

 3.源码:as_view返回自己下面的view方法

技术分享图片

4.as_view执行了自己view方法,放回值是dispatch方法.

技术分享图片

 

5.dispatch方法判断请求方式。

技术分享图片

 技术分享图片

6.所以请求已经来,第一步先执行的都是dispatch方法。

接下来我们自己也可以下dispatch方法,dispatch工作原理:

技术分享图片

 

运行结果:

 

 技术分享图片

7.dispatch方法,父类都给我们写好了。

 技术分享图片

2. django rest framework框架

内容详细:
0. FBV、CBV
  CBV,基于反射实现根据请求方式不同,执行不同的方法。
原理:
  url -> view方法 -> dispatch方法(反射执行其他:GET/POST/DELETE/PUT)

 技术分享图片

 

 技术分享图片

继承(多个类共用的功能,为了避免重复编写):

1.假设在每一个视图中的get方法,执行前后后都要加上一段代码,你会怎么办?

技术分享图片

2.两个类都有同一个方法,让它们都继承一个基类。

技术分享图片

 

 





以上是关于CBV-2-CBV流程-view源码解析-面向对象-继承的主要内容,如果未能解决你的问题,请参考以下文章

Django的View(视图)settings源码的解析模板层

Android View体系从源码解析View的layout和draw流程

Android View体系从源码解析View的measure流程

Android应用层View绘制流程与源码分析

Android源码深入源码分析UI的绘制流程 附:Android源码解析资料分享

Android源码深入源码分析UI的绘制流程 附:Android源码解析资料分享