Django остальные рамки: УДАЛИТЬ без ПК - PullRequest
0 голосов
/ 01 июля 2018

Я пользуюсь Django Rest Framwork. Я хочу сделать API для удаления объекта, подобного этому

DELETE .../items/

чтобы удалить элемент request.user. (Каждый пользователь может создать не более одного элемента, и только владелец может удалить его.)

Я использую mixins.CreateModelMixin, mixins.ListModelMixin, viewsets.GenericViewSet для просмотра списка и создания. Я пытался

@action(methods=['delete'], detail=False, url_path='')
    def leave(self, request, *args, **kwargs):
     ...

но шаблон URL будет идти:

.../items/leave/$

Как мне настроить роутер или путь для этого? Спасибо

1 Ответ

0 голосов
/ 01 июля 2018

Вы можете использовать простой APIView с методом GET и делать то, что вы хотите в этом. как это:

class MyDeleteAPIView(APIView):

    def get(self, request, *args, **kwargs):
        # for example
        try:
            user = request.user
            instance = SomeModel.objects.get(user=user)
            instance.delete()
            return Response({"message":"deleted successfuly"}, status=status.HTTP_200_OK)
        except:
            return Response({"message":"delete fail"}, status=status.HTTP_400_BAD_REQUEST)

Теперь вы можете определить желаемый URL:

path('delete/', MyDeleteAPIView.as_view(), name='delete'),
...