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

Django REST Framework(十)视图集-ViewSet

视图集(ViewSet)是 Django REST framework 中的一个高级特性,它允许你使用更少的代码来实现标准的 CRUD(创建、读取、更新、删除)操作。ViewSet 类本质上是基于 GenericAPIView 的,但它们提供了更多的默认行为,并且可以更加方便地与路由器(Router)配合使用,从而自动为你的 API 生成 URL 路由。

使用ViewSet的好处

  1. 简化路由配置:当你使用 ViewSet 时,DRF 的路由器会自动为你生成一套标准的 URL 配置,而不需要你手动去编写 URLconf。

  2. 减少代码量:ViewSet 自动包含了处理常见 HTTP 动词(GET, POST, PUT, DELETE)的方法,这大大减少了你需要编写的代码量。

  3. 易于扩展:你可以通过覆盖特定的方法来自定义行为,例如覆盖 create, update, list, retrieve 等方法。

用法

  1. 导入所需模块

     
    from rest_framework import viewsets 
    from .models import BookModel 
    from .serializers import BookModelSerializer

  2. 创建视图集

    定义一个 ViewSet 类,这个类可以继承自 viewsets.ViewSet 或者更具体的 viewsets.ModelViewSetviewsets.ModelViewSet 包含了所有的 CRUD 操作,因此对于大多数基于模型的视图

    class BookModelViewSet(viewsets.ModelViewSet):queryset = MyModel.objects.all()serializer_class = MyModelSerializer

    这里,MyModelViewSet 将自动提供以下动作:

    1. list: 列出所有对象
    2. retrieve: 获取单个对象的详情
    3. create: 创建一个新对象
    4. update: 更新一个现有对象
    5. partial_update: 部分更新一个现有对象
    6. destroy: 删除一个对象
  3. 路由配置

    在项目的 urls.py 文件中引入 DRF 的 DefaultRouter,并注册你的 ViewSet

    from django.urls import include, path
    from rest_framework.routers import DefaultRouter
    from .views import BookModelViewSetrouter = DefaultRouter()
    router.register(r'Bookmodels', BookModelViewSet)urlpatterns = [path('', include(router.urls)),
    ]

        路由器会自动为你的 ViewSet 生成 URL 模式,你无需手动指定每个 URL。最终的 URL 可能类似于 /Bookmodels//Bookmodels/{pk}/ 

常用功能

  • queryset:定义视图集所使用的查询集。
  • serializer_class:定义视图集所使用的序列化器类。
  • get_queryset():返回视图集的查询集,通常用于动态地调整查询集。
  • get_serializer_class():返回视图集的序列化器类,通常用于根据不同的操作返回不同的序列化器。

自定义行为

如果你需要自定义某些行为,可以重写视图集的方法。例如:

class BookModelViewSet(viewsets.ModelViewSet):# ...def list(self, request, *args, **kwargs):queryset = self.filter_queryset(self.get_queryset())# ... 进行额外的过滤、排序或其他操作 ...serializer = self.get_serializer(queryset, many=True)return Response(serializer.data)def perform_create(self, serializer): # 自定义创建行为     serializer.save(owner=self.request.book)

相关文章:

Django REST Framework(十)视图集-ViewSet

视图集(ViewSet)是 Django REST framework 中的一个高级特性,它允许你使用更少的代码来实现标准的 CRUD(创建、读取、更新、删除)操作。ViewSet 类本质上是基于 GenericAPIView 的,但它们提供了更多的默认行…...

sping总览

一、spring体系 1. spring是什么? 轻量级的开源的J2EE框架。它是一个容器框架,主要实现了ioc,同时又通过aop实现了面向切面编程,它又是一个中间层框架(万能胶)可以起一个连接作用,比如说把myba…...

【Godot4.2】MLTag类:HTML、XML通用标签类

概述 HTML和XML采用类似的标签形式。 之前在Godot中以函数库形式实现了网页标签和内容生成。能用,但是缺点也很明显。函数之间没有从属关系,但是多有依赖,而且没有划分出各种对象和类型。 如果以完全的面向对象形式来设计标签类或者元素类…...

美式键盘 QWERTY 布局的起源

注:机翻,未校对。 The QWERTY Keyboard Is Tech’s Biggest Unsolved Mystery QWERTY 键盘是科技界最大的未解之谜 It’s on your computer keyboard and your smartphone screen: QWERTY, the first six letters of the top row of the standard keybo…...

【JavaEE】HTTP(2)

🤡🤡🤡个人主页🤡🤡🤡 🤡🤡🤡JavaEE专栏🤡🤡🤡 🤡🤡🤡下一篇文章:【JavaEE】HTTP协议(…...

LinuxShell编程2——shell搭建Discuzz论坛网站

目录 一、环境准备 ①准备一台虚拟机 ②初始化虚拟机 1、关闭防火墙 2、关闭selinux 3、配置yum源 4、修改主机名 二、搭建LAMP环境 ①安装httpd(阿帕奇apache)服务器 查看是否安装过httpd 启动httpd 设置开机启动 查看状态 安装网络工具 测试 ②安装…...

.NET MAUI开源架构_1.学习资源分享

最近需要开发Android的App,想预研下使用.NET开源架构.NET MAUI来开发App程序。因此网上搜索了下相关资料,现在把我查询的结果记录下,方便后面学习。 1.官方文档 1.1MAUI官方学习网站 .NET Multi-Platform App UI 文档 - .NET MAUI | Micro…...

Unsloth 微调 Llama 3

本文参考: https://colab.research.google.com/drive/135ced7oHytdxu3N2DNe1Z0kqjyYIkDXp 改编自:https://blog.csdn.net/qq_38628046/article/details/138906504 文章目录 一、项目说明安装相关依赖下载模型和数据 二、训练1、加载 model、tokenizer2、…...

热修复的原理

热修复的原理 水一篇哈,完事儿后删掉热修复的原理 水一篇哈,完事儿后删掉 热修复的原理 Java虚拟机 —— JVM 是加载类的class文件的,而Android虚拟机——Dalvik/ART VM 是加载类的dex文件,而他们加载类的时候都需要ClassLoader,…...

【对顶堆 优先队列】2102. 序列顺序查询

本文涉及知识点 对顶堆 优先队列 LeetCode 2102. 序列顺序查询 一个观光景点由它的名字 name 和景点评分 score 组成,其中 name 是所有观光景点中 唯一 的字符串,score 是一个整数。景点按照最好到最坏排序。景点评分 越高 ,这个景点越好。…...

Go 语言中的互斥锁 Mutex

Mutex 是一种互斥锁,名称来自 mutual exclusion,是一种用于控制多线程对共享资源的竞争访问的同步机制。在有的编程语言中,也将其称为锁(lock)。当一个线程获取互斥锁时,它将阻止其他线程对该资源的访问,直到该线程释放锁。这可以防止多个线程对共享资源进行冲突访问,从而…...

CSS 中的 ::before 和 ::after 伪元素

目录 一、CSS 伪元素 二、::before ::after 介绍 1、::before 2、::after 3、content 常用属性值 三、::before ::after 应用场景 1、设置统一字符 2、通过背景添加图片 3、添加装饰线 4、右侧展开箭头 5、对话框小三角 6、插入icon图标 一、CSS 伪元素 CSS伪元…...

JuiceFS缓存特性

缓存 对于一个由对象存储和数据库组合驱动的文件系统,缓存是本地客户端与远端服务之间高效交互的重要纽带。读写的数据可以提前或者异步载入缓存,再由客户端在后台与远端服务交互执行异步上传或预取数据。相比直接与远端服务交互,采用缓存技…...

R语言实现SVM算法——分类与回归

### 11.6 基于支持向量机进行类别预测 ### # 构建数据子集 X <- iris[iris$Species! virginica,2:3] # 自变量&#xff1a;Sepal.Width, Petal.Length y <- iris[iris$Species ! virginica,Species] # 因变量 plot(X,col y,pch as.numeric(y)15,cex 1.5) # 绘制散点图…...

React@16.x(57)Redux@4.x(6)- 实现 bindActionCreators

目录 1&#xff0c;分析1&#xff0c;直接传入函数2&#xff0c;传入对象 2&#xff0c;实现 1&#xff0c;分析 一般情况下&#xff0c;action 并不是一个写死的对象&#xff0c;而是通过函数来获取。 而 bindActionCreators 的作用&#xff1a;为了更方便的使用创建 action…...

【深度学习入门篇 ⑦】PyTorch池化层

【&#x1f34a;易编橙&#xff1a;一个帮助编程小伙伴少走弯路的终身成长社群&#x1f34a;】 大家好&#xff0c;我是小森( &#xfe61;ˆoˆ&#xfe61; ) &#xff01; 易编橙终身成长社群创始团队嘉宾&#xff0c;橙似锦计划领衔成员、阿里云专家博主、腾讯云内容共创官…...

【Pytorch】数据集的加载和处理(一)

Pytorch torchvision 包提供了很多常用数据集 数据按照用途一般分为三组&#xff1a;训练&#xff08;train&#xff09;、验证&#xff08;validation&#xff09;和测试&#xff08;test&#xff09;。使用训练数据集来训练模型&#xff0c;使用验证数据集跟踪模型在训练期间…...

论文翻译:Explainability for Large Language Models: A Survey

https://arxiv.org/pdf/2309.01029 目录 可解释性在大型语言模型中&#xff1a;一项调查摘要1 引言2 LLMs的训练范式2.1 传统微调范式2.2 提示范式 3 传统微调范式的解释3.1 局部解释3.1.1 基于特征归因的解释3.1.2 基于注意力的解释3.1.3 基于示例的解释 3.2 全局解释3.2.1 基…...

38 IRF+链路聚合+ACL+NAT组网架构

38 IRF+链路聚合+ACL+NAT组网架构 参考文献 34 IRF的实例-CSDN博客 35 解决单条链路故障问题-华三链路聚合-CSDN博客 36 最经典的ACL控制-CSDN博客 37 公私网转换技术-NAT基础-CSDN博客 32 华三vlan案例+STP-CSDN博客 一 网络架构...

【昇思学习打卡营打卡-第二十八天】MindNLP ChatGLM-6B StreamChat

MindNLP ChatGLM-6B StreamChat 本案例基于MindNLP和ChatGLM-6B实现一个聊天应用。 安装mindnlp pip install mindnlp安装mdtex2html pip install mdtex2html配置网络线路 export HF_ENDPOINThttps://hf-mirror.com代码开发 下载权重大约需要10分钟 from mindnlp.transf…...

软件开发行业的未来:AI编程将如何改变开发行业

在科技飞速发展的今天&#xff0c;人工智能&#xff08;AI&#xff09;正以前所未有的速度渗透到各个领域&#xff0c;软件开发行业也不例外。AI编程作为AI技术在软件开发领域的重要应用&#xff0c;正在深刻地改变着开发行业的格局。对于软件测试从业者来说&#xff0c;了解AI…...

DreamTalk多语言支持深度分析:从中文到德语的语音驱动生成

DreamTalk多语言支持深度分析&#xff1a;从中文到德语的语音驱动生成 【免费下载链接】dreamtalk Official implementations for paper: DreamTalk: When Expressive Talking Head Generation Meets Diffusion Probabilistic Models 项目地址: https://gitcode.com/gh_mirro…...

天气太好啦

天气太好啦...

今日算法(构造二叉搜索树)

题目描述给你一个整数数组 nums&#xff0c;其中元素已经按 升序 排列&#xff0c;请你将其转换为一棵 平衡 二叉搜索树&#xff08;BST&#xff09;。平衡二叉搜索树&#xff1a;左右两个子树的高度差的绝对值不超过 1每个节点的左右子树都是平衡二叉树二叉搜索树的中序遍历结…...

创业公司如何借助 Taotoken 的多模型聚合能力快速验证产品 AI 功能

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 创业公司如何借助 Taotoken 的多模型聚合能力快速验证产品 AI 功能 对于资源有限的创业团队而言&#xff0c;在产品早期快速验证核…...

工业三防灯干货科普:核心参数、选型逻辑及应用场景全解析

在工业照明领域&#xff0c;三防灯是适配恶劣环境的核心照明设备&#xff0c;广泛应用于车间、仓库、隧道、冷链、食品加工等多场景。不同于民用照明灯具&#xff0c;工业级三防灯需具备防尘、防水、防腐蚀的核心能力&#xff0c;其性能直接决定照明稳定性、使用寿命及后期运维…...

猫抓Cat-Catch终极指南:从浏览器资源嗅探到流媒体下载的完整解决方案

猫抓Cat-Catch终极指南&#xff1a;从浏览器资源嗅探到流媒体下载的完整解决方案 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓Cat-Catch是一…...

如何查阅与分析Taotoken平台提供的详细用量账单

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 如何查阅与分析Taotoken平台提供的详细用量账单 对于使用大模型API的开发者与团队而言&#xff0c;清晰、准确地掌握资源消耗与成本…...

如何将企业微信 RPA 抽象为高可用的外部群自动化 API?

在做企业微信外部群&#xff08;如跨群互动、自动化精准群发、批量建群&#xff09;的自动化能力时&#xff0c;业界通常面临两种选型&#xff1a;一种是直接攻克底层协议&#xff0c;但面临极高的安全风控与多变协议的维护成本&#xff1b;另一种是基于 RPA&#xff08;机器人…...

ElevenLabs客家话语音合规红线预警:GDPR+《生成式AI服务管理暂行办法》双框架下,3类方言数据采集授权漏洞与2种语音指纹脱敏方案(含可审计代码模板)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;ElevenLabs客家话语音合规红线预警总览 ElevenLabs 作为前沿的AI语音合成平台&#xff0c;其多语言支持能力持续扩展&#xff0c;但对客家话等非标准化方言的生成存在明确的合规边界。平台未将客家话列入官方…...