Recall from Chapter 2, Views and URLconfs, that a view function is simply a Python function that takes a web request and returns a web response. This response can be the HTML contents of a web page, or a redirect, or a 404 error, or an XML document, or an image ...or anything, really. More formally, a Django view function must:
Accept an
HttpRequest
instance as its first argument; andReturn an
HttpResponse
instance.
The key to returning non-HTML content from a view lies in the HttpResponse
class, specifically the content_type
argument. By default, Django sets content_type
to text/html. You can however, set content_type
to any of the official Internet media types (MIME types) managed by IANA (for more information visit http://www.iana.org/assignments/media-types/media-types.xhtml).
By tweaking the MIME type, we can indicate to the browser that we've returned a response of a different format. For example, let's look at a view that returns a PNG image. To keep...