#24598: JsonResponse loses encoding support in Content-Type header
-----------------------------------------+------------------------
               Reporter:  funkybob       |          Owner:  nobody
                   Type:  Bug            |         Status:  new
              Component:  HTTP handling  |        Version:  1.8
               Severity:  Normal         |       Keywords:
           Triage Stage:  Unreviewed     |      Has patch:  1
    Needs documentation:  1              |    Needs tests:  1
Patch needs improvement:  0              |  Easy pickings:  0
                  UI/UX:  0              |
-----------------------------------------+------------------------
 By default when a content_type is not passed to HttpResponse it will
 create one from settings.DEFAULT_CONTENT_TYPE, and attach the encoding.

 So, when unspecified, the header will appear as:

 {{{
 Content-Type: text/html; encoding=utf-8
 }}}

 However, if you specify the content_type, this action is no taken.

 That's understandable in a "consenting adults" context, however the
 JsonResponse sets content_type using kwargs.setdefault, thus forcing the
 loss of encoding annotation in all responses.

 I propose instead that HttpResponseBase check for a
 ``default_content_type`` property to override
 settings.DEFAULT_CONTENT_TYPE, thus:


 {{{
 diff --git a/django/http/response.py b/django/http/response.py
 index c8d6930..40186b5 100644
 --- a/django/http/response.py
 +++ b/django/http/response.py
 @@ -54,8 +54,8 @@ class HttpResponseBase(six.Iterator):
          self._reason_phrase = reason
          self._charset = charset
          if content_type is None:
 -            content_type = '%s; charset=%s' %
 (settings.DEFAULT_CONTENT_TYPE,
 -                                               self.charset)
 +            content_type = getattr(self, 'default_content_type',
 settings.DEFAULT_CONTENT_TYPE)
 +            content_type = '%s; charset=%s' % (content_type,
 self.charset)
          self['Content-Type'] = content_type
 }}}

--
Ticket URL: <https://code.djangoproject.com/ticket/24598>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/051.1a7eef387763a4c01089bf984f6fa197%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to