标签:views 类方法 pre info 封装 isp 直接 dispatch framework
re_path(‘^publish/‘, views.PublishView.as_view()
1.请求进来先调用类的as_view方法
2.我在自己类中没有找到as_view所以我只能去父类找
3.我调用了我的父类,因为当前APIView继承了View父类。 我重写了 view中类方法中的类名,和实例化参数。然后我们进去父类View看下
class APIView(View):
4.大家可以看到View父类返回的是一个view函数,而在内部闭包中view返回了一个叫dispatch的东东
5.可以看到request.method.lower是否在列表中,如果在我就封装一个handler,所以我们需要分析下
self就等于Pubulish,反射get如果有就封装,没有就抛错
6.可以看到heet_method_not_allowed当进去执行HttpResponseNotAllowed的时候我看到了不一样的
7.也就是说我打印这个返回值或者类,都会触发__repr__的返回值信息,好我们接下啦返回
dispatch
8.返回值确认好了,handler这时候就直接执行get,或者 post 或者就是405异常抛错信息,然后返回
Django源码分析rest_framework 关于re_path('^publish/', views.PublishView.as_view()
标签:views 类方法 pre info 封装 isp 直接 dispatch framework
原文地址:https://www.cnblogs.com/Rivend/p/11802880.html