Вложенное действие в GenericAPIView

#python #django #django-rest-framework

#python #django #django-rest-framework

Вопрос:

Как я могу создать новый вложенный маршрут в GenericAPIView в django rest framework для включения URL API, такого как ‘report / tasks / export_excel’

Набор представлений


 class TaskReportViewSet(generics.GenericAPIView):
    queryset = TiempoOperacion.objects.all()
    pagination_class = StandardResultsSetPagination
    serializer_class = TiempoOperacionSerializer

    def get(self, request):
    """
    Some code for 'get' request ...
    """

    @action(detail=False, methods=['GET'])
    def export_excel(self, request):
        sheet = excel.pe.Sheet([[1, 2],[3, 4]])
        return excel.make_response(sheet, "csv")
  

URL-адреса


 urlpatterns = [
    url(r'^', include(router.urls)),
    url(r'^report/tasks/', TaskReportViewSet.as_view()),
]
  

Ответ №1:

Вы этого не делаете.

@action предназначено только для ViewSet , GenericViewSet ModelViewSet всего, что найдено в rest_framework.viewsets .

Комментарии:

1. Спасибо, я меняю дженерики. GenericAPIView для наборов представлений. GenericViewSet, который содержит общие представления API. Также я заменяю функцию «get» на «list», которая является запросом обработчика GET в ViewSet