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

滨江建设交易门户网站优速网站建设

滨江建设交易门户网站,优速网站建设,企业网站建设图,网站空间空间租赁django CBV源码分析 在django框架中#xff0c;视图层中的逻辑即可以使用函数处理也可以使用类进行处理#xff0c;如果在视图层中使用函数处理请求#xff0c;就是FBV(function base views)#xff0c;如果在视图层中使用类处理请求#xff0c;就是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类实例化的对象其中一个参数authenticatorsself.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://www.dnsts.com.cn/news/53816.html

相关文章:

  • 一般做网站的软件便民信息推广平台
  • 网站模版建设教程内江市住房和城乡建设局网站电话
  • 企业网站系统模板10种营销方法
  • 东莞网站建设最优wordpress设置分享
  • 做网站如何挂支付系统wordpress模板代码分析
  • 衡阳退休职工做面膜网站专门做设计的一个网站
  • 建站平台 discuz网络服务合同定义
  • 成都做网站设西安软件外包公司排名
  • 手机网站域名绑定网站建设 软件服务
  • 平谷营销型网站建设有谁做彩票网站吗
  • 运动服饰网站建设预算网站正在建设模板
  • 推广产品网站建设北京小程序 app开发公司
  • TP5企业网站开发教程百度云济南建站哪家好
  • 莱州网站建设报价wordpress 4.5 多站点不同数据
  • 建设规划展览馆网站的优势网站seo优化分析
  • 网站外包公司有哪些网站改版做重定向
  • 哈尔滨自助板建站wordpress网站怎么设置关键词
  • 贵阳门户网站建设c2c交易会被判刑嘛
  • 四平英文网站建设兰州东方商易文化传播有限责任公司
  • 开发者门户网站是什么意思百度 营销推广怎么做
  • 呼和浩特制作网站汉化版网站开发软件
  • 企业网站建设研究目的意义网络解决方案公司
  • php企业网站通讯录管理系统大丰网站建设找哪家好
  • 中文企业网站模板免费下载高清免费观看电视网站
  • wordpress 做影视站什么都能买到的网站
  • 做效果图兼职的网站网站制作的订单
  • 迪庆企业网站建设公司手机做网站用什么
  • 做网站要会编程么集约化网站建设情况经验材料
  • 维修网站怎么做建设一个小游戏网站
  • 网站设计开发招聘买东西网站建设