Skip to main content
 首页 » 编程设计

python之从 Django View 的 HttpResponse 中检索 JSON

2024年08月25日29kuangbin

所以在我的一个 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 将是一个 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)