python – 迭代django FileResponse上的streaming_content属性

我正在使用
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)
点赞