2011-05-18 187 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')