2

我使用 Django Rest 框架。我想制作一个 api 来删除这样的对象

DELETE .../items/

删除 request.user 的项目。(每个用户最多只能创建一个项目,并且只有所有者可以删除他的项目。)

我使用 mixins.CreateModelMixin、mixins.ListModelMixin、viewets.GenericViewSet 进行列表视图和创建。我努力了

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

但 url 模式会去:

.../items/leave/$

如何为此配置路由器或路径?谢谢

4

2 回答 2

0

在 Django rest 框架装饰器中,如果 url_path 为空字符串,则替换为函数名。所以你不能使用 url_path='' 作为 URL 路径。

于 2021-04-15T16:11:01.037 回答
-1

你可以只使用一个简单的 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)

现在您可以定义所需的网址:

path('delete/', MyDeleteAPIView.as_view(), name='delete'),
于 2018-07-01T04:18:48.390 回答