超出范围的浮点值与 Django 渲染不兼容

jia*_*mmy 9 django json python-3.x django-rest-framework

我正在使用django-restframework并使用它JSONRenderer来呈现我的返回响应。

但我总是遇到这样的错误:

    response = response.render()
  File "C:\Users\Domob\Desktop\dev\venv_bv_crm\lib\site-packages\django\template\response.py", line 106, in render
    self.content = self.rendered_content
  File "C:\Users\Domob\Desktop\dev\venv_bv_crm\lib\site-packages\rest_framework\response.py", line 70, in rendered_content
    ret = renderer.render(self.data, accepted_media_type, context)
  File "C:\Users\Domob\Desktop\dev\venv_bv_crm\lib\site-packages\rest_framework\renderers.py", line 104, in render
    allow_nan=not self.strict, separators=separators
  File "C:\Users\Domob\Desktop\dev\venv_bv_crm\lib\site-packages\rest_framework\utils\json.py", line 25, in dumps
    return json.dumps(*args, **kwargs)
  File "D:\python3\lib\json\__init__.py", line 238, in dumps
    **kw).encode(obj)
  File "D:\python3\lib\json\encoder.py", line 199, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "D:\python3\lib\json\encoder.py", line 257, in iterencode
    return _iterencode(o, 0)

ValueError: Out of range float values are not JSON compliant
Run Code Online (Sandbox Code Playgroud)

我的主要逻辑代码如下,nan我的数据字典中有一些值:

    response = response.render()
  File "C:\Users\Domob\Desktop\dev\venv_bv_crm\lib\site-packages\django\template\response.py", line 106, in render
    self.content = self.rendered_content
  File "C:\Users\Domob\Desktop\dev\venv_bv_crm\lib\site-packages\rest_framework\response.py", line 70, in rendered_content
    ret = renderer.render(self.data, accepted_media_type, context)
  File "C:\Users\Domob\Desktop\dev\venv_bv_crm\lib\site-packages\rest_framework\renderers.py", line 104, in render
    allow_nan=not self.strict, separators=separators
  File "C:\Users\Domob\Desktop\dev\venv_bv_crm\lib\site-packages\rest_framework\utils\json.py", line 25, in dumps
    return json.dumps(*args, **kwargs)
  File "D:\python3\lib\json\__init__.py", line 238, in dumps
    **kw).encode(obj)
  File "D:\python3\lib\json\encoder.py", line 199, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "D:\python3\lib\json\encoder.py", line 257, in iterencode
    return _iterencode(o, 0)

ValueError: Out of range float values are not JSON compliant
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到正确的回应?

T.J*_*der 19

JSON没有 的概念NaN,它只能表示代表实际数字的数字。(它也没有其他一些浮点数概念,例如无穷大和负零。)

您必须确保NaN序列化为 JSON 的数据中没有浮点数。