DRF视图组件

【1】两个视图基类

APIView

  • APIView是 Django REST Framework 提供的一个基类,用于创建基于函数或基于类的视图。
  • 使用 APIView 可以根据需求自定义请求处理逻辑,对于简单的接口逻辑,可以直接继承APIView类。

GenericAPIView

  • GenericAPIView是APIView的一个子类,提供了一些常用的通用方法和属性,使开发者能够更方便地编写试图。
  • 通常与Mixin类一起使用,通过继承GenericAPIView和混入相应的功能类可以快速建立功能完善试图。

【2】5个视图扩展类

视图扩展类用于与 GenericAPIView 或其子类配合使用,提供常用的 CRUD(创建、读取、更新和删除)操作。

ListAPIView

  • 继承自GenericAPIView和ListMixin,实现获取多条记录的功能。

CreateAPIView

  • 继承自GenericAPIView和CreateModelMixin,实现创建记录的功能。

DestroyAPIView

  • 继承自GenericAPIView和DestroyModelMixin,实现删除记录的功能。

UpdateAPIView

  • 继承自GenericAPIView和UpdateModelMixin,实现更新记录的功能。

RetrieveAPIView

  • 继承自GenericAPIView和RetrieveModelMixin,实现获取记录单条的功能。

【3】9个视图子类

视图子类用于与 GenericAPIView 或其子类配合使用,提供特定的功能和集成多个操作。

CreateModelMixin

  • 该混入类提供create()方法
  • 用于根据传入的POST请求数据创建模型的新对象实例

ListModelMixin

  • 该混入类提供list()方法
  • 用于检索模型的对象列表,并将其序列化为相应数据

RetrieveModelMixin

  • 该混入类提供retrieve()方法
  • 根据提供的标识符或查找字段检索模型的单个对象实例

DestroyModelMixin

  • 该混入类提供destroy()方法
  • 根据提供的标识符或查找字段处理删除模型的单个对象实例

UpdateModelMixin

  • 该混入类提供update()方法
  • 根据提供的标识符或查找字段处理更新模型的单个对象实例
  • 上面5个混入类并不是独立的视图,而是用于与其他基于类的视图结合使用
  • 例如 APIViewGenericAPIView 或 ViewSet
  • 通过继承这些混入类和适当的视图,开发人员可以轻松地实现所需的功能,避免编写重复的代码。

ListCreateAPIView

  • 继承自GenericAPIView、ListCreateModelMixin,实现获取多条记录和创建记录的功能。

RetrieveUpdateDestroyAPIView

  • 继承自GenericAPIView、RetrieveModelMixin、UpdateModelMixin、DestroyModelMixin,实现获取单条记录、更新记录和删除记录的功能。

RetrieveDestoryAPIView

  • 继承自GenericAPIView、RetrieveModelMixin、DestroyModelMixin,实现获取单条记录的删除记录的功能。

RetrieveUpdateAPIView

  • 继承自GenericAPIView、RetrieveModelMixin、UpdateModelMixin,实现获取单条记录和更新记录的功能。

【4】视图集

  • 视图集是一种组织和管理视图的方式,它包括了多个接口,并允许使用相同的 URL 前缀来映射这些接口。
  • ModelViewSet

    • 继承自GenericViewSet和ModelMixin,提供常用的CRUD操作(创建、读取、更新和删除)
    • 5个接口
  • ReadOnlyModelViewSet

    • 继承自GenericViewSet和ListModelMixin,只提供读取操作(查询所有和查询单条)。
    • 2个接口
    • list和retrieve (查询所有和查询单条)
  • ViewSetMixin

    • 是一个"魔法"混入类,不能单独使用,必须与视图类一起使用,用于改变路由的写法。
  • ViewSet

    • 继承自ViewSetMixin和APIView
    • 用于继承APIView并改变路由的写法
    • 在视图类中的方法可以任意命名。
  • GenericViewSet

    • 继承自ViewSetMixin和GenericAPIView
    • 用于继承GenericAPIView并改变路由的写法
    • 在视图类中的方法可以任意命名。

【5】画图

视图集

视图类

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/269985.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何使用 YOLOv8 做对象检测

介绍 对象检测是一项计算机视觉任务,涉及识别和定位图像或视频中的对象。它是许多应用的重要组成部分,例如自动驾驶汽车、机器人和视频监控。 多年来,已经开发了许多方法和算法来查找图像中的对象及其位置。卷积神经网络对于此类任务有着非…

Dbeaver如何连接Oceanbase?

Dbeaver & Oceanbase 一、新增驱动二、连接数据库 一、新增驱动 1、新建驱动 点击数据库 -> 驱动管理器 -> 新建 2、设置驱动 驱动名称可随意填写注意驱动类型要是Generichost:port填写实际的host和port 库中新增下载的oceanbase驱动jar包 二、连接数据库 1、找…

linux 系统重启 Redis 服务

先 打开服务器 执行 sudo systemctl stop redis暂停Redis服务 然后 执行 sudo systemctl start redis启动 redis 服务 然后可以执行 sudo systemctl status redis查看 redis 状态

PyAV 使用浅谈

背景: PyAV是一个用于音频和视频处理的Python库,它提供了一个简单而强大的接口,用于解码、编码、处理和分析各种音频和视频格式。PyAV基于FFmpeg多媒体框架,它本质上是FFmpeg 的Python绑定,因此可以利用FFmpeg的功能来…

移动Web

文章目录 移动 Web一、平面转换1. 平移2. 旋转3. 渐变 二、空间转换1. 平移2. 旋转3. 动画 三、移动适配1. 谷歌模拟器2. rem3. less4. vw 四、响应式布局1. 媒体查询2. Bootstrap 移动 Web 一、平面转换 作用:为元素添加动态效果,一般与过渡配合使用 …

如何使用PatchaPalooza对微软每月的安全更新进行全面深入的分析

关于PatchaPalooza PatchaPalooza是一款针对微软每月安全更新的强大分析工具,广大研究人员可以直接使用该工具来对微软每月定期推送的安全更新代码进行详细、全面且深入的安全分析。 PatchaPalooza使用了微软MSRC CVRF API的强大功能来获取、存储和分析安全更新数…

MongoDB数据库本地部署并结合内网穿透实现navicat公网访问

文章目录 前言1. 安装数据库2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射2.3 测试随机公网地址远程连接 3. 配置固定TCP端口地址3.1 保留一个固定的公网TCP端口地址3.2 配置固定公网TCP端口地址3.3 测试固定地址公网远程访问 前言 MongoDB是一个基于分布式文件存储的数…

.net6使用Sejil可视化日志

(关注博主后,在“粉丝专栏”,可免费阅读此文) 之前介绍了这篇.net 5使用LogDashboard_.net 5logdashboard rootpath-CSDN博客 这篇文章将会更加的简单,最终的效果都是可视化日志。 在程序非常庞大的时候&…

虚继承解决菱形继承的原理

菱形继承的问题,是由多重继承的父类祖先是同一个父类导致的。如下面的情况: 菱形继承,会导致同名成员的二义性问题和数据冗余问题,用下面的代码来测试: class A { public:int _a; }; // class B : public A class B :…

IP代理科普| 共享IP还是独享IP?两者的区别与优势

通俗地讲,共享IP就像乘坐公共汽车一样,您可以到达目的地,但将与其他乘客共享旅程,座位很可能是没有的。独享IP就像坐出租车一样,您可以更快到达目的地,由于车上只有您一个人,座位是您一个人专用…

我的NPI项目之Android电源系列(四) -- 关于剩余充满时间的问题的代码跟踪-max1720x_battery.c qpnp-smb2.c

从我的NPI项目之Android电源系列(三), 能够看出,healthd是通过读取/sys/class/power_supply/battery/time_to_full_now而进行充满剩余时间的。 在/sys/class/power_supply/battery/...目录下有很多文件,具体内容如下: /sys/class…

一篇了解什么是Token、什么是Jwt

目录 Token什么是TokenToken实现认证流程优缺点 JWT什么是JWTJWT组成JWT加密流程优缺点 Token与JWT的区别常见的加密算法 Token 什么是Token Token: Token是访问资源接口(API)时所需要的资源凭证,也成为令牌 传统的Token 传统的Token&am…

立创EDA与设计技巧

绘制PCB流程: 绘制原理图 ——> PCB布线 ——> 铺铜 器件: 器件就是一个个不同的元件,每个元件不同的引脚有不同的功能,但有可能封装是一样的,所以将器件和封装练习起来,才能将原理图和PCB联系…

Postman创建及删除workspace工作空间

文章目录 一、Postman创建workspace工作空间二、Postman删除workspace工作空间 一、Postman创建workspace工作空间 打开Postman 点击 Workspaces → Create Workspaces 如图所示操作 工作空间创建完成 二、Postman删除workspace工作空间 点击 Workspaces → 选择要删除…

C++ 比 C语言增加的新特性 3 之 命名空间namespace

1. 命名空间 1.1 命名空间 又称为“名字空间”,在内存(全局)中取一块区域并对其进行命名 实际例子: 同一个班级,两个同姓的人,例如:张三和张三,其中一个张三座位是在讲台右边&am…

VTK+QT配置(VS)

先根据vtk配置这个博客配置基本环境 然后把这个dll文件从VTK的designer目录复制到qt的对应目录里 记得这里是debug版本,你也可以配置release都一样的步骤,然后建立一个qt项目,接着配置包含目录,库目录,链接输入&…

Spring之国际化:i18n

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需…

第 377 场周赛虚拟参赛记录及补题

最小数字游戏 3 题目 - 思路 模拟代码 class Solution { public:vector<int> numberGame(vector<int>& nums) {sort(nums.begin(),nums.end());vector<int> ans;for (int i 0;i < nums.size();i ) if (i&1)ans.push_back(nums[i-1]);else ans.…

优维产品最佳实践第20期:控制台全链路监控

之前我们会觉得cmdb自动发现没有上报很难排查&#xff0c;弄不清楚数据的上报链路&#xff1b;监控指标的数据断点很难定位&#xff0c;flink对现场来说是一个黑盒子&#xff1b;apm数据更新不及时到底是上报异常还是入库失败呢&#xff1f; 现在控制台集成了对数据链路的监控…

大模型做实体识别任务的原理

1、背景 命名实体识别&#xff08;named entity recognition&#xff0c;NER&#xff09;&#xff1a;通常是一个序列标注的任务&#xff0c;常见的模型框架有&#xff1a;LSTM-CRF、BERTBILSTMCRF等&#xff0c;该种任务通常被成为flat NER即&#xff1a;每一个token只分配一…
最新文章