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

不允许使用Django ModelViewSet方法\"DELETE\“,即使在详细视图所需的URL中提供ID时也是如此

我了解您的要求,我会尽力给出完善且全面的答案,同时避免提及具体的云计算品牌商和使用特定方法的限制。

首先,让我们来解释一下Django的ModelViewSet方法以及"DELETE"操作。Django是一个流行的Python Web开发框架,它提供了许多方便的方法和类来简化开发过程。ModelViewSet是Django Rest Framework中的一个类,它为我们提供了处理数据模型的常见操作的快捷方式,包括"DELETE"操作,该操作用于删除特定的模型实例。

然而,在某些情况下,我们可能不希望使用"DELETE"操作,即使在详细视图的URL中提供了ID。这可能是出于安全性、业务需求或其他原因。在这种情况下,我们可以采取其他方法来实现我们的需求。

一种常见的方法是在视图函数或类中自定义处理"DELETE"操作。我们可以通过重写视图函数或类中的相关方法来实现自定义行为。例如,我们可以在视图类中重写"destroy"方法,并在其中添加自定义的删除逻辑。这样,即使在详细视图的URL中提供了ID,也不会执行默认的"DELETE"操作。

另一种方法是使用其他HTTP请求方法来代替"DELETE"操作。例如,我们可以使用"POST"方法来执行删除操作,只需在请求的主体中提供所需的参数即可。在后端代码中,我们可以通过解析请求的主体并使用相应的方法来处理删除操作。

除了这两种方法,还可以通过URL配置来限制对"DELETE"操作的访问。例如,我们可以在URL配置中使用"allow_methods"参数来限制某个URL只能接受特定的请求方法,从而达到禁用"DELETE"操作的目的。

综上所述,尽管Django的ModelViewSet方法提供了便捷的"DELETE"操作,但我们可以通过自定义处理、使用其他HTTP请求方法或URL配置来禁用它。这样我们可以根据实际需求来灵活处理删除操作。

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

相关·内容

Django rest Framework入门 四 :视图

* **视图类代码** 这里有一个特别的处理,就是视图类中的函数名是list, create这样具体的动作,而不是在django中的put,post这样的请求方法,这和后面的url中配置有关。...在这个样例代码中,我依然使用到了Django的数据库模型类,但是其实如果把list、update这些函数内的代码换成其他的业务逻辑也是没有问题的,这样就是没有数据库模型类的使用场景。...+ router.urls ``` 可以看到在与Django中不同的是,在视图类的as_view方法中添加了一个字典参数,字典中的内容是HTTP请求方法和对应的函数名的键值对。...这里事实上是DRF框架对路由的分发机制在Django的基础上做了优化,让我们可以将所有的请求方法都写在一个视图类中,而不用像在Django中那样必须区分列表类视图还是详情类视图。...在Django中,由于查单一和查多个都是由GET请求方法触发的,所以不能写在同一个类中,必须拆分到详情类和视图类中。

11910

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

前言 使用视图集ViewSet,可以将一系列逻辑相关的动作放到一个类中: list() 提供一组数据 retrieve() 提供单个数据 create() 创建数据 update() 保存数据...视图集只在使用as_view()方法的时候,才会将action动作与具体请求方式对应上。...在ViewSet中,没有提供任何动作action方法,需要我们自己实现action方法。...,还提供了GenericAPIView提供的基础方法,可以直接搭配Mixin扩展类使用。..."""经过上面的处理,我们就已经把所有视图方法写在一个类中了,但是继承父类有点多 所以,drf里面提供了模型视图集[ModelViewSet],可以一次性提供5个api接口的方法 最后,def还提供了只读模型视图集

1.6K30
  • DRF进阶之DRF视图和常用功能

    DRF视图和常用功能 DRF视图 DRF视图类介绍 在DRF框架中提供了众多的通用视图基类与扩展类,以简化视图的编写。...View:Django默认的视图基类,负责将视图连接到URL,HTTP请求方法的基本调度,之前写类视图一般都用这个。...APIView:DRF提供的所有视图的基类,继承View并扩展,具备了身份认证、权限检查、流量控制等功能。...,传递python对象 status:状态码,默认200 template_name:模板名称 headers:用于响应头信息的字典 content_type:响应数据的类型 使用方法: return...已经完成了许多功能,但会有一个问题,获取所有用户列表和单个用户需要分别定义两个视图和URL路由,使用ViewSet可以很好解决这个问题,并且实现了路由自动映射。

    4.8K10

    用django写接口(实战篇)

    :视图及模版》 《django入门:Admin管理系统及表单》 《django入门:通用视图类重构视图》 《用django写接口(入门篇)》 《用django写接口(优化篇)》 正文 上一部分我们通过基本类重构了...接口分页效果 我们可以看到接口返回的信息还包含了前一页和后一页的 url 是不是很人性化 接口数据多条件筛选 目前我们的接口要查找特定的信息只能通过 id 来查找,这肯定是不够完善的,这部分将设置接口的多条件查询...首先我们需要安装过滤器的模块 pip install django-filter 然后我们需要将过滤器模块到 settings.py 中的 INSTALLED_APPS 进行注册才可以使用。...字段,author 我们使用 django 自带的 User 类, # 我们通过 ForeignKey 进行关联两个 Model,related_name 为反向引用, # 即我们在...然后我们会得到一个 json 数据 {"detail": "身份认证信息未提供。"} 显然被拒绝访问了,同样我们操作 DELETE 等操作也是一样 ?

    2.2K20

    Django REST 框架详解 06 | 视图家族 Generics 与 Viewsets

    :视图集 1.简单使用 查看源码 代码实现 2.ModelViewSet:最全的封装类 查看源码 代码实现 接口测试 群查 单查 单删 单增 总结 GenericAPIView 与 APIView...工具视图都是 GenericAPIView 的子类,不同的子类继承不同工具类,重写请求方法。 ?...二、Viewsets:视图集 1.简单使用 DRF 提供了 Viewsets.py 视图集,再次封装之前的操作。...发现没有提供实际的方法 class GenericViewSet(ViewSetMixin, generics.GenericAPIView): """ The GenericViewSet...比如,POST请求在标准的 Model 类操作用于新增接口,但以下案例并不符合这个标准。 案例 1: 请求手机验证码时,发送 POST 请求,不需要 Model 类的参与。

    1.3K20

    django-rest-framewor

    2 解析器组件 (用来解析数据的请求的组件)   Django并不能处理请求协议为application/json编码协议的数据   注意: DRF解析器会封装到View中的parsers内,在视图函数被调用时...定义:需要为post新增url,因为根据规范,url定位资源,http请求方式定义用户行为 定义post方法:在视图类中定义post方法 开始序列化:通过我们上面定义的序列化类,创建一个序列化对象,传入参数...Django程序启动,开始初始化,获取配置信息,获取视图类并加载到内存中,获取url及视图类的对应关系 开始绑定视图类和url的对应关系,执行as_view()方法 as_view()方法被执行的时候传递了参数...self = cls(**initkwargs), cls是视图类,执行视图函数时self就指向视图函数的实例对象 等待客户端请求 请求到来,开始执行视图函数,注意,调用视图函数时的方式是view(request...返回结果 5 认证组件   cookie和session两种方式可以保存用户信息,这两种方式不同的是cookie保存在客户端浏览器中,而session保存在服务器中,他们各有优缺点,配合起来使用,可将重要的敏感的信息存储在

    1.6K10

    DRF 视图组件

    action属性 DRF 视图组件 DRF框架提供了很多通用的视图基类与扩展类,上篇使用的APIView是比较偏Base的,视图的使用更加简化了代码,这里介绍一下其他视图的用法 Django...REST framwork 提供的视图的主要作用: 控制序列化器的执行(检验、保存、转换数据) 控制数据库查询的执行 先来看看这其中的人情世故:两个视图基本类,五个扩展类,九个视图子类,视图集方法,视图集...在ViewSet中,没有提供任何动作action方法,需要我们自己实现action方法。...GenericViewSet:使用ViewSet通常并不方便,因为list、retrieve、create、update、destory等方法都需要自己编写,而这些方法与前面讲过的Mixin扩展类提供的方法同名...,还提供了GenericAPIView提供的基础方法,可以直接搭配Mixin扩展类使用。

    94010

    Django rest Framework入门 二 :DRF框架初体验

    Django rest Framework入门 一 :手工实现常见API中记录了如何手工基于Django实现常见的API类型,这篇笔记记录一下DRF框架简单使用的体验。...ModelViewSet class BookInfoView(ModelViewSet): '''图书信息视图,包含增删查改所有操作''' queryset = BookInfo.objects.all...修改url配置 demo中的跟路由配置可以不作任何修改 以books/开头的url会导向book app中的路由,如下: from django.contrib import admin from django.urls...://127.0.0.1:8000/books/ 这个url就是查询所有书籍信息的API,可以在浏览器中看到当前数据中的数据; 页面的最下面是一个表格,右下角有一个POST按钮,这个按钮对应的是POST...API,也就是创建一本书 http://127.0.0.1:8000/books/2 当在浏览器中输入这个url的时候,实际上也是一个查询的API,但是是查询id为2的这一本书的信息; 不过当进入之后会看到页面右上角会有一个红色的

    9810

    drf之请求、响应、视图

    APIView与View的不同之处在于: 传入到视图方法中的是REST framework的Request对象,而不是Django的HttpRequeset对象; 视图方法可以返回REST framework...在APIView中仍以常规的类视图定义方法来实现get() 、post() 或者其他请求方式的方法。例如使用APIView简单的实现五个增删查改的API接口。...提供的关于序列化器使用的属性与方法 属性:serializer_class  指明视图使用的序列化器 方法: get_serializer_class(self) : 当出现一个视图类中调用多个序列化器时...注意: 该方法在提供序列化器对象的时候,会向序列化器对象的context属性补充三个数据:request、format、view,这三个数据对象可以在定义序列化器时使用。...(self) :返回详情视图所需的模型类数据对象,主要用来提供给Mixin扩展类使用。

    2.2K20

    从入门到精通Django REST Framework-(六)

    什么是视图集?视图集是 DRF 提供的用于统一管理多个相关视图逻辑的类。...DRF 的路由器(如 DefaultRouter 和 SimpleRouter)通过以下机制自动生成 URL:视图集的标准化方法undefined视图集(如 ModelViewSet)定义了标准化的方法...视图集中 @action 装饰器的使用@action 是 DRF 中用于在视图集(ViewSet)中定义自定义动作的核心装饰器,可以将任意方法暴露为 API 端点。下面通过更多场景详细说明其用法。...:在 url_path 中使用正则表达式捕获参数(category)。...常见问题Q1:如何访问 URL 中的参数?对于 detail=True 的动作,pk 自动从 URL 捕获。自定义参数可通过正则表达式在 url_path 中定义(如示例 5)。

    7910

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

    在开发Web应用中,有两种应用模式: 前后端不分离[客户端看到的内容和所有界面效果都是由服务端提供出来的。] 2....例如:我们经常使用的淘宝商城就有很多的客户端,Web, iOS 和 Android端,但是当我们在 Web 端搜索商品时得到的结果和在 iOS 和 Android 端得到的结果却是一样的。...两者都是数据转换格式,比如我们在django中获取到的数据默认是模型对象,但是模型对象数据无法直接提供给前端或别的平台使用,所以需要把数据进行序列化,变成字符串或者json数据,提供给别人,这是序列化。...# 验证数据的方法[反序列化:接收客户端的数据] # 操作数据的带密码[反序列化:保存数据(添加/更新)] 编写视图views.py from django.shortcuts import...Api List中可以查看所有学生信息,也可以进行增删查改(POST/DELETE/GET/PUT) 也可以通过携带用户id的url访问单个用户 http://127.0.0.1:8000/students

    2.3K10

    Django REST Framework-什么是路由

    在Web应用程序中,路由是用于决定如何处理传入请求的机制。在DRF中,路由的作用是将特定的URL与处理该URL请求的视图函数相匹配。DRF中的路由系统是基于Django的URL路由系统构建的。...这两个路由器都提供了方便的方法来将URL映射到视图函数上,但是它们之间存在一些差异,我们将在下面的章节中对它们进行更详细的解释。...接下来,我们使用register()方法向路由器中注册视图类,这将为每个视图类生成URL模式。最后,我们将路由器的URL模式包括在Django的urlpatterns中。...接下来,我们使用register()方法向路由器中注册视图类,这将为每个视图类生成URL模式。最后,我们将路由器的URL模式包括在Django的urlpatterns中。...路由配置无论使用哪种路由器,我们都需要将路由器的URL模式包括在Django的urlpatterns中。此外,我们还需要为每个视图类提供一个URL模式。

    47311

    Python进阶41-drf框架(三)

    ---- 视图类传递参数给序列化类 ---- 介绍 # 1)在视图类中实例化序列化对象时,可以设置context内容 # 2)在序列化类中的局部钩子、全局钩子、create、update方法中,都可以用...self.context访问视图类传递过来的内容 # 需求: # 1) 在视图类中,可以通过request得到登陆用户request.user # 2) 在序列化类中,要完成数据库数据的校验与入库操作...,可能会需要知道当前的登陆用户,但序列化类无法访问request # 3) 在视图类中实例化序列化对象时,将request对象传递进去 ---- 视图层 class Book(APIView):...,需要GenericAPIView类提供的几个类属性和方法(见上方GenericAPIView基类知识点) # 3)工具类的工具方法返回值都是Response类型对象,如果要格式化数据格式再返回给前台,...(GenericAPIView或APIView) # GenericViewSet、ViewSet # 2)ViewSetMixin提供了重写的as_view()方法,继承视图集的视图类,配置路由时调用

    56420

    django优雅的实现软删除,支持Admin和DRF的软删除

    需要解决的问题 DRF 暴露DELETE方法一旦被执行,就需要操作软删除,把is_deleted字段设置为True。...简而言之: drf找不到删除的数据,admin需要全部数据 drf和admin删除数据都是软删除 解决方案 DRF Django Manager 赋予了 Django的模型(Model)中操作数据库的能力...其实你在项目中无时不刻不在使用Manager,还记得objects吗?也就是如:Book.objects.all()中的objects。有没有想过它到底是什么?...使用DRF操作删除实际上调用的是mixins.DestroyModelMixin的destroy方法,具体执行删除的方法是perform_destroy。...由于我们已经在模型层通过Manager直接改变了最初的数据过滤后的样子,这里怎么重写也是无事于补的。 于是我在想,那就在定义一个模型管理器,在Admin中使用这个管理器不就好了?

    2.4K40

    Django Rest Framework

    函数基础视图(@api_view()) 一种函数基础视图来装饰django的普通视图,我们同样可以使用request来接受请求和response响应。...1)api_view()使用方法 这个视图将使用默认渲染器、解析器、身份验证设置中指定的类等。...REST框架提供的通用视图允许快速构建API观点紧密地映射到数据库模型,如果通用视图不适合的需要API, 可以使用常规APIView类,或重用mixin和基类使用的通用视图来组成自己的组可重用通用视图。...通用视图可以设置一些类属性在通用视图内,也可以根据特殊要写重写它的内部视图方法 使用.as_views()来转换成视图函数 url(r’^/users/’, ListCreateAPIView.as_view...5、视图集合ViewSets 允许将一组相关的逻辑视图在一个类,ViewSet类是一个简单类型的基于类的观点,没有提供任何方法处理程序如.get()或. post(), 而代替提供方法比如.list(

    2.3K60

    DjangoRESTframework(补充)

    () serializer_class = BookInfoSerializer queryset 指明该视图在查询数据时使用的查询集 serializer_class 指明该视图在进行序列化或反序列化时使用的序列化器...("图书不是关于Django的") return value 2) validate 在序列化器中需要同时对多个字段进行比较验证时,可以定义 validate 方法进行验证 class...在APIView中仍以常规的类视图定义方法来实现get() 、post() 或者其他请求方式的方法。...filter_backends 过滤控制后端 详情页视图的使用 Lookup_field 查询单一数据对象使用的条件字段,默认为‘pk’ Look_url_kwarg 查询单一数据时 url 中的参数关键字名称...在ViewSet中,没有提供任何动作action方法,需要我们自己实现action方法。

    2.2K30

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

    在DRF官方教程的学习过程中,一个很明显的感受是框架在不断地进行封装,我们自己写框架/工具/脚本/平台也可以模仿模仿,先完成底层代码,再做多层封装,让使用者很容易就上手操作。...ViewSets 先看看之前在给User模型创建Endpoint时,我们新增的2个视图: class UserList(generics.ListAPIView): queryset = User.objects.all...ModelViewSet 再使用ModelViewSet把SnippetList、SnippetDetail和SnippetHighlight视图合并成一个SnippetViewSet: from rest_framework.decorators...Routers 使用ViewSet的一大好处是可以自动配置路由,DRF提供了rest_framework.routers: ?...而且DefaultRouter提供了API根目录的Endpoint,我们甚至可以把views.py中的api_root也删了。

    87420
    领券