首页 > 其他 > 详细

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

时间:2019-11-06 09:47:49      阅读:85      评论:0      收藏:0      [点我收藏+]

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()

原文:https://www.cnblogs.com/Rivend/p/11802880.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!