迭代django FileResponse上的streaming_content属性

时间:2015-04-24 19:22:54

标签: python django django-rest-framework

我正在使用django rest框架开发api,我正在编写一些单元测试来检查关键操作。我在尝试获取请求后尝试读取文件的内容

$('#chk1').change(function(){
    $('#comment').text("Question 1:" + "");
});
$('#chk2').change(function(){
    $('#comment').text("Question 1:" + "");
});
$('#chk3').change(function(){
    $('#comment').text("Question 1:" + "");
});

问题是返回的对象是类型:django.http.response.FileResponse,它继承自StreamingHttpResponse

我正在尝试迭代streaming_content属性,该属性应该是一个迭代器,但是我不能迭代,没有方法downloaded_file = self.client.get(textfile)

我检查了这个对象,得到的是map对象。有关如何从此请求获取内容的任何想法?

修改

解决问题

返回的对象是地图,地图采用函数和可迭代:

https://docs.python.org/3.4/library/functions.html#map

我必须做的是将地图转换为列表,访问列表的第一个元素并从字节转换为字符串。不是很优雅,但它有效。

next()

1 个答案:

答案 0 :(得分:3)

以下是从streaming_content地图中提取内容的方法:

content = downloaded_file.getvalue()

查看getvalue()方法的代码,我们看到它只是迭代了答案内容:

class StreamingHttpResponse(HttpResponseBase):
    ...
    def getvalue(self):
        return b''.join(self.streaming_content)