python - Django Rest Framework Response is not JSON serializable 错误

标签 python django python-3.x django-rest-framework

我在 Django REST 框架中有以下自定义异常处理程序。

class ErrorMessage:
    def __init__(self, message):
        self.message = message

def insta_exception_handler(exc, context):
    response = {}

    if isinstance(exc, ValidationError):
        response['success'] = False
        response['data'] = ErrorMessage("Validation error")

    return Response(response)

我想要如下所示的 JSON 输出

"success":false,
"data":{ "message" : "Validation error" }

但我收到错误 TypeError: Object of type 'ErrorMessage' is not JSON serializable。为什么像上面的 ErrorMessage 这样简单的类不能 JSON 序列化?我该如何解决这个问题?

最佳答案

它是不可序列化的,因为它是一个对象,它应该是dictlist或plain value。但是您可以使用魔法属性 __dict__

轻松解决您的问题
def insta_exception_handler(exc, context):
    response = {}

    if isinstance(exc, ValidationError):
        response['success'] = False
        # like this
        response['data'] = ErrorMessage("Validation error").__dict__

    return Response(response)

关于python - Django Rest Framework Response is not JSON serializable 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43931937/

相关文章:

python-3.x - 使用类包装器和 __new__ 装饰类

Python 换出 sys.modules 并不像直觉那样工作

python - 如何更改函数中变量的范围? Python

python - 在路径中制作所有目录的优雅方式

python - 将 cython 中的 numpy 数据分配给 View

python - 为什么这个sql脚本不执行?

django - 在 Django 中使用 {% url %} 时的 NoReverseMatch

python - Django |管理员将外键显示为字段而不是对象

python-3.x - Git 子模块 : git@github. com : Permission denied (publickey). 致命:无法从远程存储库读取

python-3.x - 如何在 sagemaker notebook 中打开存储在 S3 存储桶中的模型 tarfile?