我正在尝试将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。谁能告诉我需要更改什么才能使渲染器正确渲染?
答案 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
但也应用配置的渲染器)。