首页 > 解决方案 > Django 测试 - 发送包含整数的数组数组

问题描述

目前我正在尝试将包含整数的数组数组发送到我的 rest api,这是我测试的一部分:

res = self.client.post(
    '/data',
    {
        'data': [
            [1,2,3],
            [4,5,6]
        ]
    }
)

在我的序列化程序中,我尝试打印数据:

def create(self, validated_data):
    print(self.context['request'].data)
    print(self.context['request'].data['data'])

但我只是得到:

<QueryDict: {'data': ['[1, 2, 3]', '[4, 5, 6]']}>
[4, 5, 6]

预期的:

{'data': [[1, 2, 3], [4, 5, 6]]}
[[1, 2, 3], [4, 5, 6]]

怎么会这样?

我是否发送了错误的格式或者我以错误的方式访问了 json...?

谢谢和问候!

标签: djangorestapitestingframeworks

解决方案


在您的序列化程序中,添加以下字段:

data = serializers.JSONField()

self.context['request'].data在您的场景中访问您的序列化程序是没有意义的。相反,您应该访问validated_data. 添加后JSONField,通过访问您的数据字段validated_data,您应该会找到一个列表列表。

validated_data["data"]

推荐阅读