因此,在我的一个 Django 应用程序的 View 中,该方法返回一个 HttpResponse 对象。
json_str = json.dumps(json_dict)
return HttpResponse(json_str, content_type="application/json")
在应用程序的测试模块 (tests.py) 中,我模拟了 GET 请求
def setUp(self):
c = Client()
response = c.get('/url/to/view/')
根据我在 Django 测试文档中读到的内容,响应将是一个 Response 对象,它与 HttpResponse 对象类似但不完全相同。那么如何从响应中检索 json 字符串呢?
最佳答案
您应该看看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)
关于python - 从 Django View 中的 HttpResponse 检索 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30556890/