Django REST framework删除对象后无法返回自定义成功消息如何解决
Django REST Framework DestroyAPIView自定义删除响应解决方案
问题根源
perform_destroy方法仅用于执行删除实例的逻辑,DRF内置的DestroyAPIView的destroy方法不会接收该方法的返回值,删除完成后默认直接返回204 No Content空响应,因此你在perform_destroy中定义的Response不会生效。
修复代码
直接重写视图的destroy方法,替换默认响应逻辑即可,修改后代码如下:
from rest_framework.response import Response from rest_framework import status class UpdateOrderView(UpdateAPIView, DestroyAPIView): permission_classes = [AllowAny] queryset = Order.objects.all() serializer_class = OrderUpdateSerializer def destroy(self, request, *args, **kwargs): instance = self.get_object() delete_count, _ = instance.delete() if delete_count > 0: return Response( {"message": "Order deleted successfully"}, status=status.HTTP_200_OK ) return Response( {"message": "Order deletion failed"}, status=status.HTTP_400_BAD_REQUEST )
如果不需要额外判断删除结果,直接返回成功响应也可以简化写法:
def destroy(self, request, *args, **kwargs): instance = self.get_object() self.perform_destroy(instance) return Response( {"message": "Order deleted successfully"}, status=status.HTTP_200_OK )
内容的提问来源于stack exchange,提问作者Reactoo
相关产品推荐
相关产品推荐

