代码之家  ›  专栏  ›  技术社区  ›  Jack

更改序列化JSON输出

  •  0
  • Jack  · 技术社区  · 6 年前

    在Django项目中,我有一个Django rest框架序列化器

    class CarSerializer(serializers.ModelSerializer):

    这将获取一个经过筛选的查询集,然后将其序列化。

    然后我使用 JSONRenderer().render( testserializer.data ) 将其转换为JSON

    我面临的问题是,我需要更改输出,目前我得到以下结果:

    b'[{"car_age":"1","car_type":"1"},{"car_age":"4","car_type":"2"}]'
    

    但我希望视图中的返回响应具有以下json负载:

    {“cars”:[{"car_age":"1","car_type":"1"},{"car_age":"4","car_type":"2"}]}
    

    我们将非常感谢您的帮助,谢谢。

    1 回复  |  直到 6 年前
        1
  •  2
  •   neverwalkaloner    6 年前

    只需更新视图,返回以下内容:

    return JSONRenderer().render({'cars':testserializer.data})
    

    而不是

    return JSONRenderer().render(testserializer.data)
    

    此外,与每次手动呈现响应不同,使用 Response 类别:

    from rest_framework.response import Response
    return Response({'cars':testserializer.data}) 
    

    这将使用中指定的渲染器 DEFAULT_RENDERER_CLASSES 背景