gpt4 book ai didi

python - Django Rest Framework DELETE 在正文中不返回任何内容

转载 作者:行者123 更新时间:2023-11-28 22:15:44 25 4
gpt4 key购买 nike

我正在使用 Django Rest Framework 并且正在发出 DELETE 请求。与 POST、PUT、PATCH 不同,它们都返回对象创建/修改后的状态,delete 不返回主体中的任何内容(仅返回 204 代码)。

在尝试将响应与他们的原始请求联系起来时,拥有此信息会很有帮助。特别是https://github.com/agraboso/redux-api-middleware在告诉我什么成功什么错误方面做得很糟糕)

有没有办法强制 DRF 在响应正文中添加有关已删除内容的信息?

谢谢!

最佳答案

用可操作的代码补充@Linovia 的其他完整答案。

在ViewSet中,添加以下内容会有所帮助

class WhateverYourModelIsViewSet(viewsets.ModelViewSet):
def destroy(self, *args, **kwargs):
serializer = self.get_serializer(self.get_object())
super().destroy(*args, **kwargs)
return response.Response(serializer.data, status=status.HTTP_200_OK)

需要注意的几点:

  • 返回 204 代码实际上会丢弃数据,您必须返回其他内容
  • 在调用销毁之前,您需要从序列化程序中提取数据

编辑:

自从我第一次发布我的答案后,我发现自己经常需要执行上述操作。更具可扩展性的解决方案:

class DestroyWithPayloadMixin(object):
def destroy(self, *args, **kwargs):
serializer = self.get_serializer(self.get_object())
super().destroy(*args, **kwargs)
return response.Response(serializer.data, status=status.HTTP_200_OK)

class WhateverYourModelIsViewSet(DestroyWithPayloadMixin, viewsets.ModelViewSet):
# Your implementation
pass

关于python - Django Rest Framework DELETE 在正文中不返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52683250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com