2011-05-18 182 views
6

該場景如下所示。將xml渲染到視圖

我從網站上得到一個atom文件(比如說A)。第三方將通過我的網站請求這個原子文件(比如說B)。

我正在寫一個Django應用程序,它將經常輪詢網站A並將其存儲爲文件。現在,當第三方通過網站B請求文件時,我必須在瀏覽器中將文件顯示爲xml。

我的問題是如何渲染整個XML文件到Django的視圖?

render_to_response 

需要一個模板。我不能使用模板。我只需要在視圖中顯示文件。我該怎麼做呢?

回答

2

如果您不想渲染模板,請不要這樣做。 render只是呈現模板的快捷方式。如果你只是想顯示文本,只需將其傳遞到HttpResponse。

因爲你的數據是在一個文件中,這將工作:

return HttpResponse(open('myxmlfile.xml').read()) 

雖然你應該提防的併發問題,如果超過一個人在同一時間訪問您的網站。

+0

感謝您的澄清。那麼處理這種情況的最好方法是什麼? – vkris 2011-05-18 15:06:41

+0

沒有爲我工作。顯示一個「模塊」對象不可調用錯誤。 silent1mezzo的答案似乎工作正常。 – 2013-06-23 00:51:44

12

做這樣的事情。

return render(request, 'myapp/index.html', {"foo": "bar"} content_type="application/xhtml+xml") 
+0

的myapp/index.html的是模板嗎?我沒有像foo-> bar這樣的變量。我只是有一個XML文件。我需要使用類似say return render(request,「myxmlfile.xml」)的東西。此xml文件不是模板,而是有效的xml文件。 – vkris 2011-05-18 14:48:46

6

你只需要使用content_type參數來定義MIME類型'text/xml'

return HttpResponse(open('myxmlfile.xml').read(), content_type='text/xml')