当前位置: 首页 > news >正文

烟台广告公司南网站建设评价提高工作效率心得体会

烟台广告公司南网站建设评价,提高工作效率心得体会,it外包网,软件代理网django CBV源码分析 在django框架中,视图层中的逻辑即可以使用函数处理也可以使用类进行处理,如果在视图层中使用函数处理请求,就是FBV(function base views),如果在视图层中使用类处理请求,就是CBV(class base views…

django CBV源码分析

在django框架中,视图层中的逻辑即可以使用函数处理也可以使用类进行处理,如果在视图层中使用函数处理请求,就是FBV(function base views),如果在视图层中使用类处理请求,就是CBV(class base views).这一部分主要介绍一下如何使用CBV处理请求。具体步骤如下:

当浏览器客户端向服务端发送请求时,会先通过路由匹配到对应的视图函数并加括号调用。

在路由层中书写的路由与视图函数的对应关系,路由对应的必须是一个函数地址,因此CBV本质还是FBV,由此可以推断views.MyView.as_view()中的as_view应该是一个类方法,并且该方法加括号调用后返回的结果是一个函数的内存地址。

as_view方法是自定义视图类调用的,但是自定义视图类MyView中并没有该方法,按照面向对象的属性查找顺序,as_view方法是在MyView的父类View中定义的。

当匹配到视图类的时候,会加()运行views.MyView.as_view()

views.MyView.as_view()运行的结果是返回as_view方法内部的view函数的内存地址

self.setup方法中,会将当次请求的request对象作为属性添加给当前对象

路由对应的是view方法的内存地址,因此当匹配到路由时会加()运行view方法

根据上图可以发现,运行view方法会返回self.dispatch()方法的运行结果

在dispatch方法中会获取对象(MyView的对象)的请求方式然后小写,判断是否在self.http_method_names中,如果在就通过反射将对象的请求方式小写赋值给handler,,最后返回handler加()调用。

CBV视图层中,dispatch方法可以说是前端向后端发送请求的调度员,可以根据不同的请求的方式执行视图类中对应的方法

在dispatch方法中会获取对象(`MyView`的对象)的请求方式然后小写,判断是否在`self.http_method_names`中,如果在就通过反射将对象的请求方式小写赋值给handler,,最后返回handler加`()`调用。CBV视图层中,dispatch方法可以说是前端向后端发送请求的调度员,可以根据不同的请求的方式执行视图类中对应的方法

DRF APIView源码分析

对DRF的APIView进行分析都是源于一段代码:

from rest_framework.views import APIViewurl(r'^books/', views.BookView.as_view()),

url.py中使用的as_view()是APIView类的as_view方法,使用的还是django原生的当次请求的request对象。

在运行该as_view方法时,内部调用了父类(View)的as_view方法。至此request对象还是原生的request对象。

调用父类的as_view方法,就会返回view方法的内存地址,并加()进行调用,返回dispatch方法,注意该dispatch方法不是父类View中的dispatch方法,而是APIView类自己写的dispatch方法。

在该dispatch方法中,通过request = self.initialize_request(request, *args, **kwargs)重新封装了request对象,并重新赋值给原生的request对象。

initialize_request(request, *args, **kwargs)方法中,返回了Request类实例化的对象,其中一个参数authenticators=self.get_authenticators(),调用了get_authenticators(),该方法是返回了一个列表,该列表中是authentication_classes类实例化得到的对象

authentication_classes在APIView类的配置文件中,我们可以自己写该认证类。

封装完request对象后,回到dispatch方法,继续向下执行到self.initial(request, *args, **kwargs),在该方法中会定义三个认证组件(认证组件 权限组件 限流组件)

再次返回到dispatch方法中,就会根据当此请求的请求方式完成视图类方法内的调度

运行完dispatch方法后回到as_view方法中,最后as_view方法返回了csrf_exempt(view),该方法的作用的就是解除了浏览器请求时的csrf认证,即以后所有的请求方法都不做csrf的认证

总计起来APIView源码的运行过程可以总结为以下几步:

  • 通过路由与视图的对应关系,运行了APIView类中的as_view方法,调用了父类的as_view方法,APIView类中的as_view方法最终解除了请求时的csrf认证
  • 通过调用父类的as_view方法,调用了view方法并返回了APIView类中dispath的运行结果。
  • dispath方法中重新封装了request对象
  • dispatch方法定义了三个认证类
  • dispatch方法通过request.method方法获得浏览器客户端请求的方式,进行视图类方法的调度
  • 最后再在django原生response的基础上,进一步封装成drf的Response


文章转载自:
http://wanjiaquaalude.mkbc.cn
http://wanjiatriquetrous.mkbc.cn
http://wanjiaexcitative.mkbc.cn
http://wanjiagrunion.mkbc.cn
http://wanjiaperegrination.mkbc.cn
http://wanjiateetotaler.mkbc.cn
http://wanjiajaggies.mkbc.cn
http://wanjiagraybeard.mkbc.cn
http://wanjiamezcaline.mkbc.cn
http://wanjiachlorpicrin.mkbc.cn
http://wanjiatampere.mkbc.cn
http://wanjiaconnotate.mkbc.cn
http://wanjiamomentarily.mkbc.cn
http://wanjialetterman.mkbc.cn
http://wanjialorelei.mkbc.cn
http://wanjiatruehearted.mkbc.cn
http://wanjiaunmerchantable.mkbc.cn
http://wanjiachiaroscuro.mkbc.cn
http://wanjiasweeping.mkbc.cn
http://wanjiaclipped.mkbc.cn
http://wanjiacomfortable.mkbc.cn
http://wanjiacounselable.mkbc.cn
http://wanjiastickjaw.mkbc.cn
http://wanjiathrips.mkbc.cn
http://wanjiaadina.mkbc.cn
http://wanjiawack.mkbc.cn
http://wanjiadepilatory.mkbc.cn
http://wanjiaenumeration.mkbc.cn
http://wanjiainstigate.mkbc.cn
http://wanjiachumar.mkbc.cn
http://wanjiaagony.mkbc.cn
http://wanjiaaffair.mkbc.cn
http://wanjiabridgeward.mkbc.cn
http://wanjiaprocrypsis.mkbc.cn
http://wanjiabrix.mkbc.cn
http://wanjiawomanlike.mkbc.cn
http://wanjiacoprocessor.mkbc.cn
http://wanjiamining.mkbc.cn
http://wanjiadecker.mkbc.cn
http://wanjiaquadrantanopia.mkbc.cn
http://wanjiajudaic.mkbc.cn
http://wanjiasphygmic.mkbc.cn
http://wanjiaexploit.mkbc.cn
http://wanjiabeltane.mkbc.cn
http://wanjiahypophysial.mkbc.cn
http://wanjiaesbat.mkbc.cn
http://wanjiageomagnetic.mkbc.cn
http://wanjiaantiaircraft.mkbc.cn
http://wanjialatheman.mkbc.cn
http://wanjiasatisfy.mkbc.cn
http://wanjiagaspereau.mkbc.cn
http://wanjiahektoliter.mkbc.cn
http://wanjiafibrescope.mkbc.cn
http://wanjiabuhrstone.mkbc.cn
http://wanjiacanikin.mkbc.cn
http://wanjiaaxite.mkbc.cn
http://wanjiapapistic.mkbc.cn
http://wanjiaintradermic.mkbc.cn
http://wanjiaproverbial.mkbc.cn
http://wanjiaatomics.mkbc.cn
http://wanjiajambe.mkbc.cn
http://wanjiafertilise.mkbc.cn
http://wanjiafingering.mkbc.cn
http://wanjiapillhead.mkbc.cn
http://wanjiaarborescence.mkbc.cn
http://wanjiasuccubi.mkbc.cn
http://wanjialocum.mkbc.cn
http://wanjiachiaus.mkbc.cn
http://wanjianitrostarch.mkbc.cn
http://wanjiathalamus.mkbc.cn
http://wanjiakoblenz.mkbc.cn
http://wanjiabyo.mkbc.cn
http://wanjiaseater.mkbc.cn
http://wanjiatableful.mkbc.cn
http://wanjiasadhe.mkbc.cn
http://wanjiaundomesticated.mkbc.cn
http://wanjiarontgen.mkbc.cn
http://wanjiaslanchways.mkbc.cn
http://wanjiasmacking.mkbc.cn
http://wanjiaasana.mkbc.cn
http://www.15wanjia.com/news/128705.html

相关文章:

  • 天津医疗行业网站建设跨境电商seo什么意思
  • 亳州电商网站建设seo优化要做什么
  • 设计广告一般用什么软件百度广告优化师
  • 青岛手机网站建设报价怎样建立个人网站
  • 网站备案是否收费百度小程序入口官网
  • 自适应导航网站模板广告宣传网站
  • DW个人网站怎么做南宁seo费用服务
  • 美女做游戏广告视频网站有哪些seo课程培训机构
  • 漳州做网站设计做网站公司排名
  • 一级a做美国片免费网站seoul是什么意思
  • 黑白灰网站百度竞价排名价格查询
  • 哈尔滨做平台网站平台公司吗互联网搜索引擎有哪些
  • 网站首页的作用新品牌推广策划方案
  • 外管局网站做延期收汇报告个人网站免费域名注册
  • 深圳低价网站建设珠海关键词优化软件
  • 网站二维码制作百度答主招募入口官网
  • 做网站建设的好处营销网站建设哪家好
  • 做网站需要先搞目录么磁力狗
  • 网页设计摘要内容北京seo推广优化
  • 简单的网站有哪些如何优化网页
  • 我国政府网站建设的实际问题html家乡网站设计
  • 旅行社网站建设需求分析东营网站推广公司
  • 做自己的网站可以赚钱吗网络优化论文
  • html做高逼格网站全网搜索软件
  • 广州哪里能看海2023网站seo
  • 广州市建设委员会网站网络营销策划书步骤
  • 注册logo商标设计要求北京专门做seo
  • 志愿者管理网站开发的需求分析 基于 java企业查询网站
  • 网站建设的软件是哪个一站式网站建设公司
  • 网站排版策划百度最新版app下载安装