【问题标题】:Raising Exception messages in Django Rest Framework在 Django Rest Framework 中引发异常消息
【发布时间】:2021-06-15 20:24:48
【问题描述】:

我只是想在 DRF 中将异常消息显示为错误响应。

异常可以来自请求中的任何地方。例如,一些嵌套函数可以有:

raise Exception('Something went wrong at this particular point')

然后在我的视图处理程序中,我只需捕获异常并引发它:

    except Exception as e:
        raise e

这会在我的应用程序中引发异常,但无法解析响应以获取我的自定义消息。

我可以试试这个:

return Response(e, status=status.HTTP_400_BAD_REQUEST)

但这本身会返回一个异常:

Exception 类型的对象不是 JSON 可序列化的

那么我怎样才能简单地将我的异常消息返回为 400?

【问题讨论】:

    标签: django-rest-framework


    【解决方案1】:

    您可能需要先将 e 转换为字符串:尝试:

    return Response(str(e), status=status.HTTP_400_BAD_REQUEST)
    

    底层 Response 函数正在尝试对其进行序列化,而 Exception 类无法转换为 JSON。您可能还想返回一个更完整的 json 结构:

    return Response({'error_message': str(e)}, status=status.HTTP_400_BAD_REQUEST)
    

    【讨论】:

    • 天才。谢谢
    猜你喜欢
    • 2015-10-24
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多