Esq*_*lax 5 python django django-rest-framework
我正在使用django rest框架开发api,并且正在编写一些单元测试来检查关键操作。我在尝试执行获取请求后读取文件的内容
downloaded_file = self.client.get(textfile)
Run Code Online (Sandbox Code Playgroud)
问题是返回的对象类型为:django.http.response.FileResponse,它继承自StreamingHttpResponse。
我正在尝试遍历streaming_content属性,该属性应该是迭代器,但是我无法进行迭代,没有方法next()。
我检查了这个对象,得到的是地图对象。关于如何从此请求中获取内容的任何想法?
编辑:
问题解决了
返回的对象是一个映射,一个映射具有一个函数和一个可迭代的对象:
https://docs.python.org/3.4/library/functions.html#map
我要做的是将地图转换为列表,访问列表的第一个元素,然后从字节转换为字符串。不是很优雅,但可以。
list(response.streaming_content)[0].decode("utf-8")
Run Code Online (Sandbox Code Playgroud)
Rég*_* B. 11
以下是从streaming_content地图中提取内容的方法:
content = downloaded_file.getvalue()
Run Code Online (Sandbox Code Playgroud)
查看该getvalue()方法的代码,我们看到它只是迭代了答案内容:
class StreamingHttpResponse(HttpResponseBase):
...
def getvalue(self):
return b''.join(self.streaming_content)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1395 次 |
| 最近记录: |