DRF 响应没有 json 方法,但已使用
DRF response doesn't have json method but it's used
我有一个我不明白的情况,如果我在测试中做类似的事情,返回这个对象:
response = Response()
response.status_code = 200
response.data = json.dumps({'bla': 'test_bla'})
我可以检查它并且:
response.data # works
response.json() # doesn't
我看到了 the doc 但我没有看到它有方法 'json'
rest_framework.Response
(没有 json()
方法)和 urllib3.HTTPResponse
(有 json()
方法)不是同一个响应对象:
rest_framework.Response
用于对您的观点作出回应。
urllib3.HTTPResponse
在执行 HTTP 查询时使用。
urllib3.HTTPResponse
也经常在单元测试(通过 DRF APIClient
)或远程 HTTP 查询中找到,这可能就是为什么您可以在某些示例中看到它的原因。这可能是您认为 rest_framework.Response
应该有一个 json()
方法但没有的原因。
有了这个,您就可以使用 response.json()
import requests
response = requests.models.Response()
response.status_code = 200
response._content = (json.dumps(content)).encode('utf-8')
我有一个我不明白的情况,如果我在测试中做类似的事情,返回这个对象:
response = Response()
response.status_code = 200
response.data = json.dumps({'bla': 'test_bla'})
我可以检查它并且:
response.data # works
response.json() # doesn't
我看到了 the doc 但我没有看到它有方法 'json'
rest_framework.Response
(没有 json()
方法)和 urllib3.HTTPResponse
(有 json()
方法)不是同一个响应对象:
rest_framework.Response
用于对您的观点作出回应。urllib3.HTTPResponse
在执行 HTTP 查询时使用。
urllib3.HTTPResponse
也经常在单元测试(通过 DRF APIClient
)或远程 HTTP 查询中找到,这可能就是为什么您可以在某些示例中看到它的原因。这可能是您认为 rest_framework.Response
应该有一个 json()
方法但没有的原因。
有了这个,您就可以使用 response.json()
import requests
response = requests.models.Response()
response.status_code = 200
response._content = (json.dumps(content)).encode('utf-8')