2015-12-16 101 views
2

我有一個模板,我從Web服務呈現響應。服務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

所以你想讓瀏覽器下載xml文件,對不對? – utkbansal

+0

是的,我希望能夠選擇下載文件或只讀取模板中的文件,因爲有時響應會有很多信息或一些信息。響應取決於先前爲用戶選擇的WS – joselegit

回答

0

要進行文件下載,你只需要改變一個HTTP標頭,內容處理。

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 
+0

我有疑問。我需要創建其他視圖來傳遞響應,並使其能夠下載,或者我可以實際使用我正在使用的視圖。遵循您的建議,如何傳遞變量和模板名稱。 – joselegit

+0

所以你想顯示在一個頁面上,並有一個下載按鈕? – utkbansal

+0

是的。我試着將數據傳遞給模板,但是當我下載文件時只會說'[object object]' – joselegit