python - 是否可以使用 ModelViewSets 在列表视图上发出 PUT 请求?
问题描述
我的目标是处理PUT
包含多个 json 的请求。简而言之,我只想能够通过 1 个PUT
请求更新多个项目。我试图覆盖我的update()
方法ModeViewSet
,但正如我在测试中看到的那样,以下请求:
(example) response = self.client.put('/collections/', [{'id':1, ...}, {'id':2, ...}])
甚至没有进入更新方法的代码。相反,它返回了“不允许的方法”错误。我查找了这个问题,发现默认情况下,drfPUT
仅支持详细视图上的请求。
我也在堆栈溢出上找到了这个答案,但我更愿意看看是否可以在不使用 3rd-party 包的情况下完成。
- 那么,是否有不使用 3rd 方包的适当解决方案?
- 是否可以使用 ModelViewSets 使其工作,或者我应该使用不同的东西?
解决方案
是的,你的两个问题。
您需要更改路由器,以便它们将 PUT 动词映射到 someViewSet
的方法。
您必须从默认路由器复制和粘贴路由定义并将映射更改为 - 例如:
mapping={
'get': 'list',
'post': 'create',
'put': 'list_update',
},
推荐阅读
- c++ - glTexImage2D 访问冲突
- python - 通过将一个行与另一个行匹配来将熊猫数据帧相乘
- javascript - 您如何使用正则表达式测试 js 对象属性是否仅为小写字母?
- python - Python for 循环不再从 0 开始
- spring-batch - 为什么我应该在 springbatch 的 FlatFileItemWriter 中使用 close 方法?
- javascript - 如何从模块中导出模式以便在另一个模块中使用它
- android - 在 DefaultConfig_Decorated 上找不到参数 [16] 的方法 minSdkersion()
- php - 数字格式在 Smarty 的 foreach 中不起作用
- unity3d - 变换:鼠标方向不正确
- amazon-ec2 - AWS 现货实例定价投标值