提供Web服务响应以作为文件下载

时间:2015-12-16 21:21:58

标签: python django web-services django-views

我有一个模板,我从Web服务中呈现响应。

def XMLResponseView9request):
    ...
    with open(archivo_request,"r") as archivo:
         request_data = archivo.read()

    headers = {'Content-type':'text/xml'}
    data_response = requests.post(target_url, data=request_data, headers=headers)
    jdato = xmltodict.parse(data_response.content)
    data_xml = data_response.text
    data_template = json.dumps(jdato)

    return render_to_response('response.html',
                              {'data':data_template,'dataxml':data_xml},
                              context_instance=RequestContext(request))

除了渲染响应之外,我想将响应作为要下载的文件(xml或txt)提供。

我尝试将响应作为文本传递(变量:data_xml)并通过简单的javascript函数提供,但文件为空或只有一行“[object Object]”。

可以将响应作为DJANGO视图中的文件提供,而不是将文本传递给模板。

提前致谢

1 个答案:

答案 0 :(得分:0)

要使文件可下载,您只需更改一个HTTP标头,Content-Disposition。

def some_view(response):
    xmlFile = open(pathout, 'r')
    myfile = FileWrapper(xmlFile)
    response = HttpResponse(myfile, content_type='application/xml')
    response['Content-Disposition'] = 'attachment; filename='+filename
    return response