首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Django Rest框架的模型视图集中重新定义方法delete或destroy

,可以通过继承框架提供的基类视图集来实现。

首先,需要导入相关的模块和类:

代码语言:python
代码运行次数:0
复制
from rest_framework import viewsets
from rest_framework.response import Response
from rest_framework import status

然后,创建一个继承自viewsets.ModelViewSet的自定义视图集类,并重新定义deletedestroy方法:

代码语言:python
代码运行次数:0
复制
class MyModelViewSet(viewsets.ModelViewSet):
    queryset = MyModel.objects.all()
    serializer_class = MyModelSerializer

    def delete(self, request, *args, **kwargs):
        instance = self.get_object()
        self.perform_destroy(instance)
        return Response(status=status.HTTP_204_NO_CONTENT)

    # 或者重新定义destroy方法
    # def destroy(self, request, *args, **kwargs):
    #     instance = self.get_object()
    #     self.perform_destroy(instance)
    #     return Response(status=status.HTTP_204_NO_CONTENT)

在上述代码中,MyModelViewSet是自定义的视图集类,MyModel是你的模型类,MyModelSerializer是你的模型序列化器类。

在重新定义的deletedestroy方法中,首先通过self.get_object()获取要删除的对象实例,然后调用self.perform_destroy(instance)来执行删除操作。最后,返回一个Response对象,其中status=status.HTTP_204_NO_CONTENT表示删除成功。

这样,当客户端发送DELETE请求到对应的URL时,就会调用重新定义的deletedestroy方法来处理删除操作。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):提供高性能、可扩展的云服务器实例,适用于各种应用场景。详情请参考腾讯云云服务器
  • 腾讯云对象存储(COS):提供安全可靠、低成本、高扩展性的云端存储服务,适用于存储和处理各种类型的数据。详情请参考腾讯云对象存储
  • 腾讯云数据库MySQL版(TencentDB for MySQL):提供高性能、可扩展的云数据库服务,适用于各种规模的应用。详情请参考腾讯云数据库MySQL版

请注意,以上推荐的腾讯云产品仅作为示例,实际选择产品时需要根据具体需求进行评估和选择。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

drf框架中所有视图及用法

0909自我总结 drf框架中所有视图及用法 一.drf框架所有视图类 from django.views import View from rest_framework import views,...generics, mixins, viewsets 最基础:django自带views类 drf框架中最基础视图类:views.APIView drf框架中工具视图:generics GenericAPIView...视图集 上述视图都是基于django自带views进行相关方法分装 二.viewsets视图集 ViewSetMixin:视图集工具 - 重写as_view - 将 请求方式 映射到视图类中 指定方法...我们路由中 类名.as_view({'get': 'retrieve', 'delete': 'remove_obj'}) GenericViewSet:与模型类有关接口视图集 - 可以从mixins...那继承功能,也可以自定义功能 ViewSet:与模型类无关不是标准模型类接口 - 一般都是自定义功能 三.generics中GenericAPIView使用 将 queryset 和 serializer_class

1.8K30
  • python教程

    Django提供表单(Form)类和模型表单(ModelForm)类相同方式,REST 框架包括了实例化(Serializer)类和模型实例化(ModelSerializer)类。...用我们序列化来写常规Django视图 让我们看看,使用我们新序列化类,我们怎么写一些API视图。此刻,我们不会使用REST框架其他特性,仅仅像写常规Django视图一样。...用这些标识符代替纯数字HTTP状态码是很好注意。 装饰API视图 REST框架提供两个装饰器,你可以用它们来写API视图。 1 @api_view装饰器用在基于视图方法上。...REST框架提供两种HTML渲染样式,一种是用模板渲染处理HTML,另一种是用预渲染HTML。第二种是我们想要用方式。 创建代码时,我们需要考虑是,高亮视图我们使用普通视图中是不存在。...视图集(ViewSets)和路由(Routers) REST框架包括对ViewSets简短描述,这可以让开发者把精力集中构建状态和交互API模型,而且它可以基于一般规范自动构建URL。

    5.1K10

    DRF 视图组件

    demo ReadOnlyModelViewSet视图集 两个视图集总结: 其他视图集 ViewSet GenericViewSet ViewSetMixin 总结 补充 视图集中定义附加action动作...action属性 DRF 视图组件 DRF框架提供了很多通用视图基类与扩展类,上篇使用APIView是比较偏Base视图使用更加简化了代码,这里介绍一下其他视图用法 Django...() # 等同于上面 queryset = models.Book.objects.all() ''' # 可以重写get_queryset方法book视图类里操作作者模型...As_view ({'get': 'list', 'post': 'create'}) 总结 补充 视图集中定义附加action动作 视图集中,除了上述默认方法动作外,还可以添加自定义动作。...属性 视图集中,我们可以通过action对象属性来获取当前请求视图集时action动作是哪个。

    91910

    DRF框架学习(三)

    功能: 1.视图request对象不再是Django中 HttpRequest类对象,而是由DRF框架封装成 Request类对象。...为了方便设置状态码,REST framewrok rest_framework.status模块中提供了常用状态码常量,我们直接使用即可。...2)创建一个扩展类,将抽取代码进行封装。 3)视图函数中进行调用。 1.3.1扩展类5个详解 DRF框架提供了5个扩展类,封装了通用增删改查流程。...(重要) 2.2注意点 1、视图集中处理方法不再是以请求方式命名,而是以对应操作名称(list、create、update、retrieve、destroy) 2、进行url配置时候,要指明请求地址请求方式和视图集中处理函数之间对应关系...2.4视图集中添加额外处理方法 1、直接在视图集中定义额外处理方法即可 2、进行url配置时候指定请求地址请求方式和处理函数之间对应关系。

    1.2K20

    Django REST Framework-常用视图

    Django REST Framework是基于Django一个用于构建Web API框架。它提供了许多用于构建Web API工具和实用程序,其中最常用是类视图。...类视图是一种Django REST FrameworkAPI视图,它是基于类视图。它提供了一种方便方式来编写可重用Web API视图,并带有许多有用内置功能。...例如,如果您想要编写一个视图来处理一个模型列表,并支持GET,POST和DELETE请求,您可以使用GenericAPIView,如下所示:from rest_framework.generics import...视图中,我们指定了要使用查询集和序列化器,并使用list,create和destroy方法处理GET,POST和DELETE请求。...总结在Django REST Framework中,类视图是一种方便方式来编写Web API视图,并带有许多有用内置功能。

    69030

    重点内容回顾-DRF

    重点内容回顾-DRF 1. on_delete on_delete定义模型类中外键一个选项。 on_delete选项指明是主表删除数据时候,对于外键引用表数据如何处理。...2. related_name related_name是定义模型类时,外键一个选项。它功能下面慢慢给大家分析一下。...,validators=[about_django]) b.序列化器中定义一个方法 validate_,来对 字段进行验证。.../update/retrieve/destroy 2.进行url配置时候,要指明请求地址请求方式和视图集中处理函数之间对应关系。...5.6.4视图集中添加额外处理方法 1.直接在视图定义额外处理方法即可 2.进行url配置时候也要指定请求地址请求方式和处理函数之间对应关系。

    2.4K20

    Django Rest Framework

    REST框架提供通用视图允许快速构建API观点紧密地映射到数据库模型,如果通用视图不适合需要API, 可以使用常规APIView类,重用mixin和基类使用通用视图来组成自己组可重用通用视图。...通用视图可以设置一些类属性通用视图内,也可以根据特殊要写重写它内部视图方法 使用.as_views()来转换成视图函数 url(r’^/users/’, ListCreateAPIView.as_view...注意,mixin类提供操作方法而不是定义处理程序方法,比如. get()和. post(),直接。这允许更灵活组合行为。 通过rest_framework.mixins引用。...方法,检索一个存在model对象 UpdateModelMixin: 提供Update方法,更改一个模型对象 DestroyModelMixin:提供destroy方法,删除一个模型对象 4)Generic...5、视图集合ViewSets 允许将一组相关逻辑视图一个类,ViewSet类是一个简单类型基于类观点,没有提供任何方法处理程序如.get(). post(), 而代替提供方法比如.list(

    2.3K60

    drf之请求、响应、视图

    APIView与View不同之处在于: 传入到视图方法REST frameworkRequest对象,而不是DjangoHttpRequeset对象; 视图方法可以返回REST framework...APIView中仍以常规视图定义方法来实现get() 、post() 或者其他请求方式方法。例如使用APIView简单实现五个增删查改API接口。...注意: 该方法提供序列化器对象时候,会向序列化器对象context属性补充三个数据:request、format、view,这三个数据对象可以定义序列化器时使用。...试图中可以调用该方法获取详情信息模型类对象。**若详情访问模型类对象不存在,会返回404。...3.2 action 视图集中,我们可以通过action对象属性来获取当前请求视图集时action动作是哪个。除了默认方法动作外,还可以添加自定义动作。

    2.1K20

    django-rest-framewor

    DRF(Django RestFramework)是一套基于Django开发、帮助我们更好设计符合REST规范Web应用一个Django App,所以,本质上,它是一个Django App。...2 解析器组件 (用来解析数据请求组件)   Django并不能处理请求协议为application/json编码协议数据   注意: DRF解析器会封装到View中parsers内,视图函数被调用时...定义:需要为post新增url,因为根据规范,url定位资源,http请求方式定义用户行为 定义post方法视图类中定义post方法 开始序列化:通过我们上面定义序列化类,创建一个序列化对象,传入参数...:{ “get”: “retrieve”, “delete”: “destroy”, “put”: “update” } 上一步中执行as_view()方法传递参数目的是为了完成优化,将delete请求方式重新命名为不同函数...ViewSetMixin类重写了as_view()方法,也就是在这个地方将几个函数重新绑定,它并没有重写dispatch方法方法返回视图函数view,注意在这个函数中有一个行 self = cls

    1.6K10

    DRF终极封装ViewSet和Router附教程PDF源码

    DRF官方教程学习过程中,一个很明显感受是框架在不断地进行封装,我们自己写框架/工具/脚本/平台也可以模仿模仿,先完成底层代码,再做多层封装,让使用者很容易就上手操作。...ViewSets 先看看之前在给User模型创建Endpoint时,我们新增2个视图: class UserList(generics.ListAPIView): queryset = User.objects.all...可以把它们合成一个视图。 set是集合意思,ViewSets就是视图集合。...def perform_destroy(self, instance): instance.delete() 修改URLConf 视图改为ViewSet后,需要同时修改URLConf...我们重新编写snippets/urls.py看看是什么效果: from django.urls import path, include from rest_framework.routers import

    86920

    构建强大API-DjangoREST框架探究与实践

    Web开发中,RESTful API是一种遵循REST原则API设计风格,它使用HTTP协议进行通信,通过GET、POST、PUT、DELETE等HTTP方法来实现对资源操作。...我们可以视图视图集中使用permission_classes属性来配置授权策略:from rest_framework.permissions import IsAuthenticatedclass...例如,我们可以视图函数视图集中使用Response对象返回自定义响应数据:from rest_framework.response import Responsedef my_view(request...缓存配置我们可以视图函数视图集中使用@method_decorator装饰器来配置缓存:from django.utils.decorators import method_decoratorfrom...首先,我们学习了如何使用Django REST框架来创建简单API端点,包括定义模型、序列化器、视图集以及路由配置等。

    39620

    【愚公系列】2022年04月 Python教学课程 70-DRF框架视图

    视图集只使用as_view()方法时候,才会将action动作与具体请求方式对应上。..."""经过上面的处理,我们就已经把所有视图方法写在一个类中了,但是继承父类有点多 所以,drf里面提供了模型视图集[ModelViewSet],可以一次性提供5个api接口方法 最后,def还提供了只读模型视图集...queryset = BookInfo.objects.all() # 指定序列化器 serializer_class = BookSerializer """ 视图集中...(self): """视图集中视图对象下面会新增一个action属性,用于获取视图方法名""" if BookInfo.action == "get_top_3":...此扩展方法包括:get_serializer_class(获取序列化器返回)、action属性、自定义方法使用 from django.db import DatabaseError from rest_framework.authentication

    1.6K30

    Django rest-framework视图家族

    ,一堆mixins工具类与GenericAPIView视图基类组合 视图集 viewsets:可自定义映射关系 from rest_framework import views,generics,mixins...类属性,提供序列化类并使用自定义序列化类序列化 总结:GenericAPIView就是APIView基础上额外提供了三个方法和三个类属性,如果不配合视图工具类,则体现不出来优势所在 使用它好处:视图增删改查逻辑其实大差不差...pass # django源代码中是真的删除 return self.destroy(request, *args, **kwargs) 工具视图类 generics..., *args, **kwargs): pass 视图集 viewsets 重写as_view方法,增加action参数(可以完成路由层请求方法映射关系) 可以路由层中自定义请求方法映射关系...使用viewsets视图集类实现接口 配置对哪个表进行操作 配置使用哪个序列化类 可自定义路由层中请求方法映射关系来实现接口 路由层 url(r'^v5/cars/$', views.ViewViewsetsAPIView.as_view

    76220

    第 9 篇:实现分类、标签、归档日期接口

    一是 action 装饰器,它用来装饰一个视图集中方法,被装饰方法会被 django-rest-framework 路由自动注册为一个 API 接口。...回顾一下我们之前使用视图集 viewset 时提到过 action(动作)概念,django-rest-framework 预定义了几个标准动作,分别为 list 获取资源列表,retrieve...视图集中所有以上提及以标准动作命名方法,都会被 django-rest-framework 路由自动注册为标准 API 接口。...django-rest-framework 默认只能识别标准命名视图方法并将其注册为 API,但我们可以添加更多非标准 action,而为了让 django-rest-framework 能够识别这些方法...action 装饰器通常用于视图集中添加额外接口实现。例如这里我们已有了 PostViewSet 视图集,标准 list 实现了获取文章资源列表逻辑。

    2.6K30

    DRF类视图让你代码DRY起来

    刚开始写views.py模块代码,一般都是用def定义函数视图,不过DRF更推荐使用class定义视图,这能让我们代码更符合DRY(Don't Repeat Yourself)设计原则: ?...使用APIView rest_framework.views.APIView是DRF封装API视图,继承了django.views.generic.base.View: ?...模块,封装了类视图常用增删改查方法: ?...这是DRF提供通用API类视图,mixins只提供了处理方法,views.py中类要成为视图,还需要继承GenericAPIView,GenericAPIView继承了本文第一小节提到rest_framework.views.APIView...东方说 学到这里,已经开始感受到了Django REST framework强大之处了,我觉得学一个框架,不仅要看如何使用,还需要了解它设计思路和底层实现,这样才能更好总结为自己编程思想,写出更漂亮代码

    55110

    Django REST Framework-路由器(一)

    Django REST Framework(以下简称DRF)是基于Django框架构建Web API框架。...DRF中,路由器(Router)是一个非常有用工具,可以帮助我们轻松地定义API路由,实现快速、可维护API开发。一、路由器作用在DRF中,路由器主要作用是将URL和视图函数绑定在一起。...使用视图集需要先定义一个继承自ModelViewSetViewSet类,然后将这个类传递给路由器register方法即可。...这个方法需要将视图函数包装成APIViewView子类,然后将这个类实例传递给路由器register方法即可。...由于HelloView继承自APIView,因此需要使用as_view方法将其转换为视图函数。添加路由器到URLconf注册视图函数之后,还需要将路由器添加到DjangoURLconf中。

    71941

    学生宿舍管理系统(jsp+mysql).rar

    ,一般都是用def定义函数视图,不过DRF更推荐使用class定义视图,这能让我们代码更符合DRY(Don’t Repeat Yourself)设计原则: 使用APIView rest_framework.views.APIView...是DRF封装API视图,继承了django.views.generic.base.View: 我们用它把函数视图改写成类视图,编辑snippets/views.py: from snippets.models...Mixin后,可以直接使用它.create()方法,类似的还有.list()、.retrieve()、.update()和.destroy()。...: 这是DRF提供通用API类视图,mixins只提供了处理方法,views.py中类要成为视图,还需要继承GenericAPIView,GenericAPIView继承了本文第一小节提到rest_framework.views.APIView...东方说 学到这里,已经开始感受到了Django REST framework强大之处了,我觉得学一个框架,不仅要看如何使用,还需要了解它设计思路和底层实现,这样才能更好总结为自己编程思想,写出更漂亮代码

    3.7K00

    跟着官方文档学Python——Django Rest framework

    跟着官方文档学Python Django Rest framework 这周将会持续更新跟着官方文档学Python系列文章,主要是围绕web框架以及其他后端组件官方文档展开学习。...通过GET/ POST/ PUT/ DELETE来获取/新建/更新/删除资源。一般使用JSON格式返回数据。大多数web框架都有相应插件支持RESTful API。...两者都是数据转换格式,比如我们django中获取到数据默认是模型对象,但是模型对象数据无法直接提供给前端别的平台使用,所以需要把数据进行序列化,变成字符串或者json数据,提供给别人,这是序列化。...Django Rest framework Django REST framework是一个内置django里面的子应用,可以快速开发REST API接口应用。...'rest_framework', ] 项目中如果使用rest_framework框架实现API接口,主要有以下三个步骤: 将请求数据(如JSON格式)转换为模型类对象 通过模型类对象进行数据库操作

    2.3K10
    领券