Django Rest中的DELETE方法

时间:2017-12-16 23:57:11

标签: python django django-rest-framework

我正在尝试在Django Rest中删除记录。

views.py: -

class ItemPartialView(generics.RetrieveUpdateDestroyAPIView):

    queryset = itemlist.objects.all()
    serializer_class = ItemlistSerializer

    def put(self, request, *args, **kwargs):
        return self.partial_update(request, *args, **kwargs)

    def destroy(self, request, *args, **kwargs):
        obj = self.get_object()
        if obj.survey:
            return Response(data={'message': "Too late to delete"},
                        status=status.HTTP_400_BAD_REQUEST)
        self.perform_destroy(obj)
        return Response(status=status.HTTP_204_NO_CONTENT)

urls.py: -

urlpatterns = {
    url(r'^itemlists/$', ItemView.as_view(), name="create"),
    url(r'^itemlists/(?P<pk>\d+)/$', ItemPartialUpdateView.as_view(), name="update")

}

现在,当我向itemlists/1/发送DELETE请求时,它不会删除id = 1的记录 错误显示Method DELETE not allowed

(CREATE,READ,UPDATE正在工作,除了DELETE,所以我不认为这是与cors相关的问题)。

2 个答案:

答案 0 :(得分:0)

您似乎为itemlists/1/定义了2条路线。你的代码正在击中第一个只有部分更新(PUT / PATCH)支持从名称判断的代码。

您应该在同一个类上创建一个同时包含update和destroy的视图。这应该工作。

答案 1 :(得分:0)

据我所知-您不要在网址中使用ItemPartialView

您改用ItemPartialUpdateView,所以我的猜测是此视图不支持删除。