Python django JsonResponse忽略了自定义编码器
我正在使用Django Rest框架(版本:Django 3.1、djangorestframework 3.11.1、python 3.7)构建一个应用程序 我想重写JsonResponse中使用的编码器 我的问题过于简单化:Python django JsonResponse忽略了自定义编码器,python,json,django,encoding,django-rest-framework,Python,Json,Django,Encoding,Django Rest Framework,我正在使用Django Rest框架(版本:Django 3.1、djangorestframework 3.11.1、python 3.7)构建一个应用程序 我想重写JsonResponse中使用的编码器 我的问题过于简单化: 从django.http导入JsonResponse 从django.core.serializers.json导入DjangoJSONEncoder 类CustomEncoder(DjangoJSONEncoder): def默认值(自身,o): 返回o+10 res
从django.http导入JsonResponse
从django.core.serializers.json导入DjangoJSONEncoder
类CustomEncoder(DjangoJSONEncoder):
def默认值(自身,o):
返回o+10
response=JsonResponse({“数据”:1},编码器=CustomEncoder)
我期望从response.getvalue()
得到的是'{“data”:11}'
,但我得到的是'{“data”:1}'
我做错了什么?因为DjangoJSONEncoder使用
JSONEncoder subclass that knows how to encode date/time, decimal types, and
UUIDs.
必须传递日期/时间、十进制类型或
无法调用方法重写默认值的UUID
试着换成
class CustomEncoder(DjangoJSONEncoder):
def default(self, o):
return int(o) + 10
response = JsonResponse({"data": Decimal(1)}, encoder=CustomEncoder)
它将返回{“数据”:11}