从Django视图中从HttpResponse中检索JSON

时间:2015-05-31 11:32:21

标签: python json django

因此,在我的一个Django应用程序的视图中,该方法返回一个HttpResponse对象。

transform: scale

在我的应用程序测试模块(tests.py)中,我模拟了一个GET请求

json_str = json.dumps(json_dict)
return HttpResponse(json_str, content_type="application/json")

根据我在Django测试文档中读到的内容,响应将是一个Response对象,它与HttpResponse对象类似但不完全相同。那么如何从响应中检索json字符串?

2 个答案:

答案 0 :(得分:2)

您应该查看JsonResponse这是HTTPResponse的子类。

从测试客户端,您可以检索具有属性内容的实际响应字符串:

>>> from django.test import Client
>>> c = Client()
>>> response = c.post('/login/', {'username': 'john', 'password': 'smith'})
>>> response.status_code
200
>>> response = c.get('/customer/details/')
>>> response.content
'<!DOCTYPE html...'

如果响应恰好包含json,则字符串将包含JSON。

测试工具还包括用于处理JSON的有用工具,如assertJSONEqual

如果要将响应字符串转换为实际的python字典,可以使用

执行此操作
import json

response = json.loads(c.get('/myjsonview/').content)

答案 1 :(得分:1)

您可以像这样检索响应json:

import json

response = json.loads(c.get('/url/to/view/').content)