gpt4 book ai didi

django rest 框架 perform_update 或 post_save 返回自定义响应

转载 作者:行者123 更新时间:2023-12-04 18:37:52 26 4
gpt4 key购买 nike

当对象超过 8 分钟时,如何返回自定义响应 json 错误。

这是我的代码,但响应不起作用:

def perform_update(self, serializer):
instance = serializer.save()
diff_minutes = (datetime.now() - instance.ordered_date).total_seconds() / 60
if diff_minutes > 8:
return Response({'expired': True}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
self.post_save(instance)

当我使用 post_save 时也是如此.

我没有得到任何回应,它总是通过。

有什么建议吗?

最佳答案

由于您想专门返回 500 错误,因此您可以引发 APIException .例如:

from rest_framework.exceptions import APIException

def perform_update(self, serializer):
instance = serializer.save()
diff_minutes = (datetime.now() - instance.ordered_date).total_seconds() / 60
if diff_minutes > 8:
raise APIException("expired")
self.post_save(instance)

提高 APIException将触发 .handle_exception(self, exc)功能。默认情况下将返回如下结果:
{detail : "expired" }
和状态码 500 .如果您需要更多地控制确切的返回值/状态代码,您可以覆盖 handle_exception函数并让它返回任何你喜欢的东西。

此外,显然我没有足够的代表发表评论,因为您对之前发布的解决方案提出疑问,说明您只想在更新时进行验证。您可以覆盖 update()序列化程序中的函数,并且只会在更新时调用,而不是 create()当您创建新对象时将调用它。

关于django rest 框架 perform_update 或 post_save 返回自定义响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30259327/

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