[Fixed]-Render an xml to a view


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.


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')


Do something like the below:

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


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'.


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"?>
    <foo>{{ foo }}</foo>

Leave a comment