Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django JsonResponse忽略了自定义编码器_Python_Json_Django_Encoding_Django Rest Framework - Fatal编程技术网

Python django 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 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
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}