一.CBV源码分析
1.分析流程
CBV的源码分析在上一篇文章中做过详细介绍 👉点击传送:https://www.cnblogs.com/songhaixing/p/14583239.html
2.总结分析步骤
- path的第二个参数是:View类的as_view内部有个view闭包函数内存地址
- 一旦有请求来了,匹配test路径成功
- 执行第二个参数view函数内存地址(requset)
- 本质执行了self.dispatch(request)
- 通过反射去获得方法 (假设是get方法) 的内存地址赋值给handler
- 最后执行handler方法, 传入参数, 也就是触发了(get)方法的执行
二.APIView源码分析
与CBV的源码分析过成一样, 我们也是从路由中的as_view()
方法入手
1.首先创建一个DRF类来逐步分析
- views.py
from rest_framework.views import APIView
from rest_framework.response import Response
class DrfTestView(APIView):
def get(self,request):
print(type(request))
print(type(request._request))
print(request._request<