json - 如何使用 Django-Restframework 序列化包含列表的字典?
问题描述
我正在为我的 Django-App 创建一个 REST-API。我有一个函数,它返回一个字典列表,我想将其序列化并与 rest-api 一起返回。
列表 (nodes_of_graph) 如下所示: [{'id': 50, position: {'x': 99.0, 'y': 234.0}, 'locked': True}, {'id': 62, position: { 'x': 27.0, 'y': 162.0}, 'locked': True}, {'id': 64, position: {'x': 27.0, 'y': 162.0}, 'locked': True}]
由于我是 python、django 和 Restframwork 的新手,我不知道如何尝试这个。有人在这里吗,谁知道如何解决这个问题?
不知何故,我序列化这个列表的所有尝试都失败了。我试过了
class Graph_Node_Serializer(serializers.ListSerializer):
class Nodes:
fields = (
'id',
'position',
'locked',
)
def nodes_for_graph(request, id):
serializer = Graph_Node_Serializer(nodes_of_graph)
return Response(serializer.data)
我希望的结果是 django-rest-framework 的响应,其中包含字典列表中的数据。
解决方案
一个可行的解决方案是创建 Serializer 类的子类。对于这里制定的问题,它看起来像这样:
Graph_Node_Serializer(serializers.Serializer)
id = serializers.IntegerField(required=True)
class PositionSerializer(serializers.Serializer):
x = serializers.FloatField(required=True)
y = serializers.FloatField(required=True)
position = PositionSerializer(required=False)
locked = serializers.BooleanField(required=False, default=True)
def nodes_for_graph(request, graph_id):
serializer = Graph_Node_Serializer(nodes_of_graph, many=True)
Response(serializer.data)