gpt4 book ai didi

python - 如何处理 python django Rest-framework-api 格式错误的 UUID 而不是 500?

转载 作者:行者123 更新时间:2023-12-02 04:32:28 25 4
gpt4 key购买 nike

在 django-rest-framework 中使用格式错误的 UUID 时,服务器会抛出异常并返回状态代码 500。异常 ValueError 'badly returned hexadecimal UUID string' 不会被处理。

正确处理它并返回状态代码 400 更有意义。

我设法使用自定义异常处理程序来做到这一点,但这是一个非常困惑且丑陋的解决方案。

我考虑过使用自定义序列化器来完成此操作,但我不确定如何正确处理它以及这是否是正确的 django 方法。

你觉得怎么样?

干杯。

最佳答案

我通过重写 ViewSet 解决了这个问题,因为它负责在将对象传递给序列化器之前获取对象。为了方便起见,我创建了 UUIDViewSetMixin 将其添加到所需的 View 集。

class UUIDViewSetMixin(object):
lookup_field = 'id'

def get_object(self):
value = self.kwargs.get(self.lookup_field)
try:
uuid.UUID(value)
except ValueError:
result = {
'code': 'bad_request',
'message': _("'%(value)s' is not a valid uuid") % {'value', value}
}
return JsonResponse(data=data, request=status=status.HTTP_400_BAD_REQUEST)
return super(UUIDViewSetMixin, self).get_object()

关于python - 如何处理 python django Rest-framework-api 格式错误的 UUID 而不是 500?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44229541/

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