【问题标题】:Is it possible to make a PUT request on list view, using ModelViewSets?是否可以使用 ModelViewSet 在列表视图上发出 PUT 请求?
【发布时间】:2018-11-26 20:43:10
【问题描述】:

我的目标是处理包含多个 json 的 PUT 请求。简而言之,我只想能够通过 1 个PUT 请求更新多个项目。我试图在我的ModeViewSet 中覆盖update() 方法,但正如我在测试中看到的,以下请求:

(example) response = self.client.put('/collections/', [{'id':1, ...}, {'id':2, ...}])

甚至没有进入更新方法的代码。相反,它返回了“不允许的方法”错误。我查找了这个问题,发现默认情况下,drf 仅在详细视图上支持 PUT 请求。

我还在这里找到了this关于堆栈溢出的答案,但我更愿意看看是否可以在不使用 3rd-party 包的情况下完成。

  • 那么,有没有不使用第三方包的合适解决方案?
  • 是否可以使用 ModelViewSets 使其工作,或者我应该使用不同的东西吗?

【问题讨论】:

    标签: python django django-rest-framework


    【解决方案1】:

    对你的两个问题都同意。

    您需要更改路由器,以便它们将 PUT 动词映射到某个 ViewSet 的方法。

    您必须从 default router 复制和粘贴路由定义并将映射更改为 - 例如:

    mapping={
        'get': 'list',
        'post': 'create',
        'put': 'list_update',
    },
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-05
      • 2012-06-21
      • 2020-04-18
      • 1970-01-01
      • 2012-02-29
      相关资源
      最近更新 更多