如何在Django Rest Framework中发送DELETE的请求体

时间:2018-04-27 23:26:40

标签: django python-3.x rest django-rest-framework

所以我试图在DRF中发送DELETE请求正文。我知道默认情况下,DRF不支持批量操作,所以我使用的是django-rest-framework-bulk

现在按照tutorial,我确保只有在过滤查询时才允许批量删除。我正在使用BulkModelViewset。

考虑这个json数组:

[{

    "id": "1",
    "first_name": "bruce",
    "second_name": "banner",
    "team": "avengers"
},
{
    "id": "2",
    "first_name": "clark",
    "second_name": "kent",
    "team": "Justice League"
}
{

    "id": "3",
    "first_name": "dead",
    "second_name": "pool",
    "team": "x force"
}]

现在我可以通过传递过滤器来批量删除:

DELETE /api_name/?first_name=bruce,clark

但我的前端人员想要发送一个请求正文,因为如果有100个对象需要删除,那么它们不会在查询参数中以逗号分隔的字符串发送100个ID。

有没有办法可以发送请求正文,就像我在POST,PUT等中一样。像,

[{

    "id": "1",
    "first_name": "bruce",
    "second_name": "banner",
    "team": "avengers"
},
{
    "id": "2",
    "first_name": "clark",
    "second_name": "kent",
    "team": "Justice League"
}]

将删除传递的对象。

我是REST原则的新手,因此我的整个逻辑可能存在错误。我试图在网上找到答案,但找不到具体的东西。谢谢

示例视图集:

class TeamViewSet(BulkModelViewSet):
    serializer_class = TeamViewSerializer
    queryset = TeamView.objects.all()
    filter_backends = (DjangoFilterBackend,filters.OrderingFilter,)
    filter_class =TeamViewFilter
    ordering = ('id','second_name','first_name','team')

    def allow_bulk_destroy(self, qs, filtered):
        return filtered

0 个答案:

没有答案