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

文具网站建设全网营销网站建设特点

文具网站建设,全网营销网站建设特点,wordpress APP canwp,金融类网站设计Django Class-Based Views (CBV) 与 DRF APIView 的区别解析 在 Django 开发中#xff0c;基于类的视图#xff08;Class-Based Views, CBV#xff09;是实现可重用性和代码结构化的利器。而 Django REST Framework (DRF) 提供的 APIView 是针对 API 开发的扩展。 一、CBV …Django Class-Based Views (CBV) 与 DRF APIView 的区别解析 在 Django 开发中基于类的视图Class-Based Views, CBV是实现可重用性和代码结构化的利器。而 Django REST Framework (DRF) 提供的 APIView 是针对 API 开发的扩展。 一、CBV 视图解析 class BookView(View):def get(self, request):return HttpResponse(View GET请求...)def post(self, request):return HttpResponse(View POST请求...)def delete(self, request):return HttpResponse(View DELETE请求...)BookView 继承自 Django 提供的 View 类它定义了三个常见的 HTTP 方法GET、POST 和 DELETE。这里的 View 类是一个基类用来处理请求方法的分发。 1. View 类中的 as_view class View:def as_view(cls):def view(request, *args, **kwargs):self cls() # 实例化 BookView 类return self.dispatch(request, *args, **kwargs)return viewas_view 方法返回一个闭包函数 view当有请求进来时view 函数会被调用。view 内部实例化视图类 BookView()然后调用 dispatch 方法进行请求处理。 2. dispatch 方法 def dispatch(self, request, *args, **kwargs):handler getattr(self, request.method.lower()) # 获取对应的处理方法如 get/postreturn handler(request, *args, **kwargs)dispatch 方法根据请求的 HTTP 方法如 GET、POST 等通过 getattr 动态调用对应的方法。如果是 GET 请求它会调用 self.get()如果是 POST 请求则调用 self.post()以此类推。 3. 路由绑定 path(book/, views.BookView.as_view())通过 as_view() 将类视图转换为可调用的视图函数进而绑定到特定的 URL 路径。 二、DRF 中的 APIView 解析 DRF 提供的 APIView 是 CBV 的增强版专门用于构建 API。它继承并扩展了 Django 的 View 类增加了认证、权限和限流机制。 from rest_framework.views import APIViewclass BookView(APIView):def get(self, request):return HttpResponse(APIView GET请求...)def post(self, request):return HttpResponse(APIView POST请求...)def delete(self, request):return HttpResponse(APIView DELETE请求...)1. APIView 中的 as_view class APIView:def as_view(cls):view super().as_view() # 调用父类 View 的 as_view 方法return viewAPIView 重写了 as_view但它仍然调用了 super().as_view()也就是继承了 View 类中的逻辑。这意味着请求首先会经过 View 的分发机制。 2. dispatch 方法的增强 def dispatch(self, request, *args, **kwargs):request self.initialize_request(request, *args, **kwargs) # 初始化新的 request 对象self.request request# 初始化认证、权限、限流组件self.initial(request, *args, **kwargs)handler getattr(self, request.method.lower()) # 获取对应的处理方法return handler(request, *args, **kwargs)dispatch 方法做了更多的工作。除了请求方法的分发还包括对请求对象的初始化initialize_request以及认证、权限和限流initial的处理。这些增强使 APIView 非常适合用于 API 开发因为它考虑到了 API 常见的安全和性能需求。 3. 认证、权限、限流 APIView 会自动调用 DRF 的认证、权限和限流组件 认证self.initial 方法会触发 authentication_classes 中定义的认证机制。权限同理它会检查 permission_classes 中定义的权限控制。限流则通过 throttle_classes 实现。 三、对比总结 特性Django View (CBV)DRF APIView请求分发通过 dispatch 分发到 get、post 等方法继承自 View同时增加了请求对象的初始化请求处理只负责 HTTP 方法的处理增加了认证、权限、限流机制适用场景适用于通用的 Web 开发适用于 API 开发安全机制健全 使用场景分析 CBV 适合传统的 Web 应用开发尤其是以模板渲染为主的场景。APIView 则更适合 RESTful API 开发它内置了很多用于处理 API 请求的功能比如认证和限流使得开发者能更专注于业务逻辑而不必重复造轮子。 通过对 CBV 和 APIView 的对比分析我们可以发现它们的核心逻辑相似但在实际使用中APIView 具有更多的扩展能力尤其是对于 API 开发DRF 的设计让开发者能更好地应对复杂的需求。
http://www.hkea.cn/news/14547356/

相关文章:

  • 怎样学习做网站的编程化肥网站模板
  • 内江市住房和城乡建设局网站自微网站
  • 电脑端网站和手机网站区别用ps做衣服网站首页
  • 做国际网站花钱吗企业门户网站数据库设计
  • 新校区建设专题网站seo诊断书案例
  • 企业网站广告网站口碑营销
  • 诸城网站制作大部分网站是国内虚拟主机和国外虚拟主机
  • 镇江本地网站街景地图手机版下载
  • 平台网站建设设计深圳室内装修设计公司排名
  • 网站建设可用性的五个方面网站的安全建设或者解决方案
  • 网站制作注意事项dw网页制作视频
  • 建设工程 质量 协会网站西安云英网站建设
  • 网站到期时间查询地方旅游网站模板
  • 内部优惠券网站怎么做建网站设置网站首页
  • 包头网站建设奥北注册网址
  • 华龙建设部网站查不到wordpress 添加widget
  • 怎么评价网站做的好坏中国国家数据统计网
  • php在网站开发中的应用wordpress 标题分隔符
  • 外贸网站建设定做安徽网站建设方案服务
  • 网站建设基本教程做个模板网站多少钱
  • 做网站生意旁宁波万华建设
  • 专门做杂志的网站有哪些做商城网站需要什么资质
  • 兰州手机网站制作公司查询企业营业执照怎么查
  • 云建站系统前三名电子商务网站建设需要哪些步骤
  • 百度网站建设洛阳专业做网站多少钱
  • 诺基亚官方网站tp框架网站开发参考文献
  • 抚州 提供网站建站 公司商务网站开发的流程
  • 北京期刊网站建设网站设置了权限
  • 做网站交易装备可以么成都网络推广外包
  • 济南集团网站建设公司好厦门市建设区网站