Django Rest框架网址

时间:2018-12-19 15:53:33

标签: python django django-rest-framework

我正在使用rest框架构建Django API,阅读文档,DRF只能从模型中提取(获取,发布,修补,删除)。现在达成的协议是我如何使用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)

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

1 个答案:

答案 0 :(得分:2)

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

网址是根据操作名称生成的,例如

@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