我正在使用
django rest框架开发api,我正在编写一些单元测试来检查关键操作.我正在尝试在执行get请求后读取文件的内容
downloaded_file = self.client.get(textfile)
问题是返回的对象是类型:django.http.response.FileResponse,它继承自StreamingHttpResponse.
我试图迭代streaming_content属性,它应该是一个迭代器,但我不能迭代,没有方法next().
我检查了这个对象,得到的是map对象.有关如何从此请求获取内容的任何想法?
编辑:
问题解决了
返回的对象是一个map,map是一个函数和一个iterable:
https://docs.python.org/3.4/library/functions.html#map
我必须做的是将地图转换为列表,访问列表的第一个元素并从字节转换为字符串.不是很优雅,但它的工作原理.
list(response.streaming_content)[0].decode("utf-8")
最佳答案 以下是从streaming_content映射中提取内容的方法:
content = downloaded_file.getvalue()
查看getvalue()方法的代码,我们看到它只是迭代了答案内容:
class StreamingHttpResponse(HttpResponseBase):
...
def getvalue(self):
return b''.join(self.streaming_content)