Browse files

Fixed #16519 -- Deprecated mimetype kwarg of HttpResponse __init__

This keyword was already deprecated in the code (supported for
backwards compatibility only), but never formally deprecated.
Thanks Paul McMillan for the report and yasar11732 for the initial
  • Loading branch information...
1 parent deed192 commit da200c5e35cdbb617572977bcbf97fae33920b2e @claudep claudep committed Jun 30, 2012
Showing with 25 additions and 21 deletions.
  1. +5 −3 django/http/
  2. +7 −7 django/template/
  3. +3 −0 docs/internals/deprecation.txt
  4. +10 −11 docs/ref/request-response.txt
@@ -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,
@@ -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 @@ def __init__(self, template, context=None, mimetype=None, status=None,
# 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 @@ def __init__(self, request, template, context=None, mimetype=None,
# 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
@@ -280,6 +280,9 @@ these changes.
specified as a plain string instead of a tuple will be removed and raise an
+* The ``mimetype`` argument to :class:`~django.http.HttpResponse` ``__init__``
+ will be removed (``content_type`` should be used instead).
@@ -606,27 +606,26 @@ Attributes
-.. 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
joined together to form the content of the response. If it is not
an iterator or a string, it will be converted to a string when
+ ``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)

0 comments on commit da200c5

Please sign in to comment.