【问题标题】:Django rest framework urlsDjango 休息框架网址
【发布时间】:2018-12-19 15:53:32
【问题描述】:

我正在用 rest 框架构建一个 Django API,我阅读了文档,DRF 只从模型中生成了一个 crud(获取、发布、修补、删除)。现在的问题是我如何使用 DRF 进行自定义操作。

例子:

api/v1/model/custom_action

代码:

class DistrictViewSet(viewsets.ModelViewSet):
      queryset = District.objects.all()
      serializer_class = DistrictSerializer

      def custom_action(request, param):
          # do many actions and return as Json Object

urls.py

url(r'api/v1/', include(router.urls))

路由器在哪里

router.register(r'model',api.ModelViewSet)

我是正确的还是我需要创建另一个模型视图,自定义代码并将其添加到路由器列表?

【问题讨论】:

    标签: python django django-rest-framework


    【解决方案1】:

    您可以像以前一样添加自定义操作,但您可能需要 @action 装饰器来配置 url 以应用于单个对象或多个对象。 @action(detail=True)pk 添加到 url,因为它适用于一个对象。

    url是从action名生成的,所以例如

    @action(detail=True)
    def custom_action(self):
        pass
    

    将产生网址^<app_name>/{pk}/custom_action/$

    您可能会发现这很有用: https://www.django-rest-framework.org/api-guide/viewsets/#marking-extra-actions-for-routing

    【讨论】:

    • 谢谢!!有效。再次阅读文档以检查我是否遗漏了一些:D
    猜你喜欢
    • 2013-04-08
    • 2021-11-26
    • 1970-01-01
    • 2015-02-25
    • 2016-04-25
    • 2016-03-23
    • 2016-06-20
    相关资源
    最近更新 更多