Django 测试 - 发送包含整数的数组数组

标签 django rest api testing frameworks

目前我正在尝试将包含整数的数组发送到我的 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...?

谢谢和问候!

最佳答案

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

data = serializers.JSONField()

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

validated_data["data"]

关于Django 测试 - 发送包含整数的数组数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53793710/

相关文章:

python - Django级联删除反向外键

python - 如何检查密码是否重合?

rest - Microsoft Graph API -/drive/root/children 始终为空,即使我的 onedrive 中有文件

python - REST API 的 Tornado URL 正则表达式 : how to not define the item ID argument for the POST action?

javascript - 对第 3 方 API 的请求进行速率限制

python - 使用 south 重命名 django 模型类名和相应的外键,而不会丢失数据

python - 无法让 mysql 与 django 一起工作

rest - 如何在 ExtJs 4 中获取 REST 响应消息?

azure - 在 Azure Pipelines 上使用 Karate 进行 API 测试

c++ - 类定义和函数签名中的宏有什么用?