diff --git a/django/http/__init__.py b/django/http/__init__.py index bcb06cbb87c..fe3b9896633 100644 --- a/django/http/__init__.py +++ b/django/http/__init__.py @@ -212,18 +212,22 @@ class HttpResponse(object): status_code = 200 - def __init__(self, content='', mimetype=None, status=None): + def __init__(self, content='', mimetype=None, status=None, + content_type=None): from django.conf import settings self._charset = settings.DEFAULT_CHARSET - if not mimetype: - mimetype = "%s; charset=%s" % (settings.DEFAULT_CONTENT_TYPE, settings.DEFAULT_CHARSET) + if mimetype: + content_type = mimetype # For backwards compatibility + if not content_type: + content_type = "%s; charset=%s" % (settings.DEFAULT_CONTENT_TYPE, + settings.DEFAULT_CHARSET) if not isinstance(content, basestring) and hasattr(content, '__iter__'): self._container = content self._is_string = False else: self._container = [content] self._is_string = True - self.headers = {'Content-Type': mimetype} + self.headers = {'Content-Type': content_type} self.cookies = SimpleCookie() if status: self.status_code = status diff --git a/docs/request_response.txt b/docs/request_response.txt index a17a60ff177..826065981ba 100644 --- a/docs/request_response.txt +++ b/docs/request_response.txt @@ -342,7 +342,7 @@ hard-coded strings. If you use this technique, follow these guidelines: Methods ------- -``__init__(content='', mimetype=DEFAULT_CONTENT_TYPE)`` +``__init__(content='', mimetype=None, status=200, content_type=DEFAULT_CONTENT_TYPE)`` Instantiates an ``HttpResponse`` object with the given page content (a string) and MIME type. The ``DEFAULT_CONTENT_TYPE`` is ``'text/html'``. @@ -350,6 +350,16 @@ Methods return strings, and those strings will be joined together to form the content of the response. + ``status`` is the `HTTP Status code`_ for the response. + + **(New in Django development version)** ``content_type`` is an alias for + ``mimetype``. Historically, the parameter was only called ``mimetype``, + but since this is actually the value included in the HTTP ``Content-Type`` + header, it can also include the character set encoding, which makes it + more than just a MIME type specification. If ``mimetype`` is specifiedi + (not None), that value is used. Otherwise, ``content_type`` is used. If + neither is given, the ``DEFAULT_CONTENT_TYPE`` setting is used. + ``__setitem__(header, value)`` Sets the given header name to the given value. Both ``header`` and ``value`` should be strings. @@ -396,6 +406,8 @@ Methods ``write(content)``, ``flush()`` and ``tell()`` These methods make an ``HttpResponse`` instance a file-like object. +.. _HTTP Status code: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10 + HttpResponse subclasses -----------------------