情况如下。
我从一个网站(假设为A)获取一个atom文件。第三方将通过我的网站(假设为B)请求此atom文件。
我正在编写一个Django应用程序,它将频繁地轮询网站A并将其存储为文件。现在,当第三方通过网站B请求该文件时,我将不得不在浏览器中将该文件显示为xml。
我的问题是,如何在Django视图中呈现整个xml文件?
render_to_response
需要一个模板,但我不能直接使用模板。我只需要在视图中显示文件。我该怎么做?
情况如下。
我从一个网站(假设为A)获取一个atom文件。第三方将通过我的网站(假设为B)请求此atom文件。
我正在编写一个Django应用程序,它将频繁地轮询网站A并将其存储为文件。现在,当第三方通过网站B请求该文件时,我将不得不在浏览器中将该文件显示为xml。
我的问题是,如何在Django视图中呈现整个xml文件?
render_to_response
需要一个模板,但我不能直接使用模板。我只需要在视图中显示文件。我该怎么做?
您只需使用 content_type
参数定义 MIME 类型为 'text/xml'
:
return HttpResponse(open('myxmlfile.xml').read(), content_type='text/xml')
请执行以下操作:
return render(request, 'myapp/index.html', {"foo": "bar"}, content_type="application/xhtml+xml")
如果您不想渲染模板,请不要这样做。 render
只是渲染模板的快捷方式。如果您只想显示文本,只需将其传递到 HttpResponse 中。
由于您的数据在文件中,因此可以这样做:
return HttpResponse(open('myxmlfile.xml').read())
虽然您应该注意并发问题,如果有多个人同时访问您的网站。
return render(request, 'products.xml', content_type='text/xml')
render
函数也可以使用;你需要像jdelos的回答一样添加content_type='text/xml'
即可。
只需使用content_type参数将MIME类型定义为“text / xml”即可。
return render(request,'xmltemplate.xml',{'foo':'bar'},content_type ='text / xml')
如果需要,可以在xmltemplate.xml中呈现变量。
<?xml version="1.0" encoding="UTF-8"?>
<note>
<foo>{{ foo }}</foo>
</note>