将XML渲染到视图中
场景是这样的。
我从一个网站(比如说A)获取一个atom文件。然后,有一个第三方会通过我的网站(比如说B)请求这个atom文件。
我正在写一个Django应用,它会定期去网站A获取这个文件并把它存储为一个文件。现在,当第三方通过网站B请求这个文件时,我需要在浏览器中以xml格式显示这个文件。
我的问题是,如何在Django中将整个xml文件渲染到视图中呢?
render_to_response
这个地方需要一个模板。但我不能使用模板。我只需要在视图中显示这个文件。我该怎么做呢?
5 个回答
19
做一些像下面这样的事情:
return render(request, 'myapp/index.html', {"foo": "bar"}, content_type="application/xhtml+xml")
21
你只需要通过 content_type
参数把 MIME 类型设置为 'text/xml'
就可以了:
return HttpResponse(open('myxmlfile.xml').read(), content_type='text/xml')
6
如果你不想渲染一个模板,那就别去做。render
只是一个用来渲染模板的快捷方式。如果你只是想显示一些文本,那就直接把它放进 HttpResponse 里就行了。
因为你的数据在一个文件里,这样做是可以的:
return HttpResponse(open('myxmlfile.xml').read())
不过你要注意并发问题,也就是说如果有好几个人同时访问你的网站,可能会出现一些问题。