diff --git a/django/http/__init__.py b/django/http/__init__.py index 30d7e5dc2f1..51e6ca23041 100644 --- a/django/http/__init__.py +++ b/django/http/__init__.py @@ -524,14 +524,16 @@ class HttpResponse(object): status_code = 200 - def __init__(self, content='', mimetype=None, status=None, - content_type=None): + def __init__(self, content='', content_type=None, status=None, + mimetype=None): # _headers is a mapping of the lower-case name to the original case of # the header (required for working with legacy systems) and the header # value. Both the name of the header and its value are ASCII strings. self._headers = {} self._charset = settings.DEFAULT_CHARSET - if mimetype: # For backwards compatibility. + if mimetype: + warnings.warn("Using mimetype keyword argument is deprecated, use" + " content_type instead", PendingDeprecationWarning) content_type = mimetype if not content_type: content_type = "%s; charset=%s" % (settings.DEFAULT_CONTENT_TYPE, diff --git a/django/template/response.py b/django/template/response.py index bb0b9cbf9d8..286417ccdf4 100644 --- a/django/template/response.py +++ b/django/template/response.py @@ -9,8 +9,8 @@ class ContentNotRenderedError(Exception): class SimpleTemplateResponse(HttpResponse): rendering_attrs = ['template_name', 'context_data', '_post_render_callbacks'] - def __init__(self, template, context=None, mimetype=None, status=None, - content_type=None): + def __init__(self, template, context=None, content_type=None, status=None, + mimetype=None): # It would seem obvious to call these next two members 'template' and # 'context', but those names are reserved as part of the test Client # API. To avoid the name collision, we use tricky-to-debug problems @@ -22,8 +22,8 @@ class SimpleTemplateResponse(HttpResponse): # content argument doesn't make sense here because it will be replaced # with rendered template so we always pass empty string in order to # prevent errors and provide shorter signature. - super(SimpleTemplateResponse, self).__init__('', mimetype, status, - content_type) + super(SimpleTemplateResponse, self).__init__('', content_type, status, + mimetype) # _is_rendered tracks whether the template and context has been baked # into a final response. @@ -137,8 +137,8 @@ class TemplateResponse(SimpleTemplateResponse): rendering_attrs = SimpleTemplateResponse.rendering_attrs + \ ['_request', '_current_app'] - def __init__(self, request, template, context=None, mimetype=None, - status=None, content_type=None, current_app=None): + def __init__(self, request, template, context=None, content_type=None, + status=None, mimetype=None, current_app=None): # self.request gets over-written by django.test.client.Client - and # unlike context_data and template_name the _request should not # be considered part of the public API. @@ -147,7 +147,7 @@ class TemplateResponse(SimpleTemplateResponse): # having to avoid needing to create the RequestContext directly self._current_app = current_app super(TemplateResponse, self).__init__( - template, context, mimetype, status, content_type) + template, context, content_type, status, mimetype) def resolve_context(self, context): """Convert context data into a full RequestContext object diff --git a/docs/internals/deprecation.txt b/docs/internals/deprecation.txt index f338adac332..9359c82e467 100644 --- a/docs/internals/deprecation.txt +++ b/docs/internals/deprecation.txt @@ -280,6 +280,9 @@ these changes. specified as a plain string instead of a tuple will be removed and raise an exception. +* The ``mimetype`` argument to :class:`~django.http.HttpResponse` ``__init__`` + will be removed (``content_type`` should be used instead). + 2.0 --- diff --git a/docs/ref/request-response.txt b/docs/ref/request-response.txt index a29ddc63ccb..551ee00c6b1 100644 --- a/docs/ref/request-response.txt +++ b/docs/ref/request-response.txt @@ -606,11 +606,10 @@ Attributes Methods ------- -.. method:: HttpResponse.__init__(content='', mimetype=None, status=200, content_type=DEFAULT_CONTENT_TYPE) +.. method:: HttpResponse.__init__(content='', content_type=None, status=200) - Instantiates an ``HttpResponse`` object with the given page content (a - string) and MIME type. The :setting:`DEFAULT_CONTENT_TYPE` is - ``'text/html'``. + Instantiates an ``HttpResponse`` object with the given page content and + content type. ``content`` should be an iterator or a string. If it's an iterator, it should return strings, and those strings will be @@ -618,15 +617,15 @@ Methods an iterator or a string, it will be converted to a string when accessed. + ``content_type`` is the MIME type optionally completed by a character set + encoding and is used to fill the HTTP ``Content-Type`` header. If not + specified, it is formed by the :setting:`DEFAULT_CONTENT_TYPE` and + :setting:`DEFAULT_CHARSET` settings, by default: "`text/html; charset=utf-8`". + + Historically, this parameter was called ``mimetype`` (now deprecated). + ``status`` is the `HTTP Status code`_ for the response. - ``content_type`` is an alias for ``mimetype``. Historically, this 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 specified (not ``None``), that value is used. - Otherwise, ``content_type`` is used. If neither is given, the - :setting:`DEFAULT_CONTENT_TYPE` setting is used. .. method:: HttpResponse.__setitem__(header, value)