[Fixed]-Render an xml to a view

6👍

If you don’t want to render a template, don’t do so. render is just a shortcut to render a template. If you just want to display text, just pass it into the HttpResponse.

Since your data is in a file, this will work:

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

although you should beware of concurrency issues, if more than one person is accessing your site at a time.

21👍

You just need to define the MIME type to 'text/xml' using the content_type argument:

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

18👍

Do something like the below:

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

4👍

return render(request, 'products.xml', content_type='text/xml')

The render function can also work; you must add like jdelos’ answer, simply adding the content_type='text/xml'.

2👍

Just define the MIME type to ‘text/xml’ using the content_type argument.

return render(request, 'xmltemplate.xml', {'foo':'bar'}, content_type='text/xml')

In the xmltemplate.xml render the variables if you want.

<?xml version="1.0" encoding="UTF-8"?>
<note>
    <foo>{{ foo }}</foo>
</note>

Leave a comment