从2.3迁移到3.0分页结果在JSON中有OrderedDict

时间:2015-02-27 09:34:50

标签: django-rest-framework

我正在尝试将Django REST Framework从2.3.14升级到3.0.5我的功能测试失败,因为3.0没有返回正确的JSON。

在2.3中我得到了

{'results': [{'id': 2}, ...

但是在3.0中,JSON没有正确呈现而留下OrderedDict

{'results': [OrderedDict([('id', 2), ...

我使用的是Python 3.4和Django 1.6。谁能告诉我需要更改什么才能使渲染器正确渲染?

2 个答案:

答案 0 :(得分:0)

我主张反对在.2.3中工作的response.data。在3.0中不再有效,但对response.content断言确实有效。

self.assertDictEqual(
    json.loads(response.content.decode('utf-8')),
    { ...

答案 1 :(得分:0)

与2.x相比,DRF 3.x中的序列化机制略有改变(改进)。

因此response.data包含资源的原始序列化python表示(列表或单个项)。如果要测试与最终呈现表示(JSON)的相等性,则应使用response.content(使用.data但也应用配置的渲染器)。