码迷,mamicode.com
首页 > 其他好文 > 详细

Django源码分析rest_framework 关于re_path('^publish/', views.PublishView.as_view()

时间:2019-11-06 09:13:48      阅读:135      评论:0      收藏:0      [点我收藏+]

标签: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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!