diff options
Diffstat (limited to 'rest_framework/renderers.py')
| -rw-r--r-- | rest_framework/renderers.py | 18 | 
1 files changed, 14 insertions, 4 deletions
diff --git a/rest_framework/renderers.py b/rest_framework/renderers.py index 2fdd3337..7a7da561 100644 --- a/rest_framework/renderers.py +++ b/rest_framework/renderers.py @@ -10,6 +10,7 @@ from __future__ import unicode_literals  import copy  import json +import django  from django import forms  from django.core.exceptions import ImproperlyConfigured  from django.http.multipartparser import parse_header @@ -145,7 +146,7 @@ class XMLRenderer(BaseRenderer):      def render(self, data, accepted_media_type=None, renderer_context=None):          """ -        Renders *obj* into serialized XML. +        Renders `data` into serialized XML.          """          if data is None:              return '' @@ -195,7 +196,7 @@ class YAMLRenderer(BaseRenderer):      def render(self, data, accepted_media_type=None, renderer_context=None):          """ -        Renders *obj* into serialized YAML. +        Renders `data` into serialized YAML.          """          assert yaml, 'YAMLRenderer requires pyyaml to be installed' @@ -426,7 +427,7 @@ class BrowsableAPIRenderer(BaseRenderer):                  files = request.FILES              except ParseError:                  data = None -                files = None         +                files = None          else:              data = None              files = None @@ -543,6 +544,14 @@ class BrowsableAPIRenderer(BaseRenderer):          raw_data_patch_form = self.get_raw_data_form(view, 'PATCH', request)          raw_data_put_or_patch_form = raw_data_put_form or raw_data_patch_form +        response_headers = dict(response.items()) +        renderer_content_type = '' +        if renderer: +            renderer_content_type = '%s' % renderer.media_type +            if renderer.charset: +                renderer_content_type += ' ;%s' % renderer.charset +        response_headers['Content-Type'] = renderer_content_type +          context = {              'content': self.get_content(renderer, data, accepted_media_type, renderer_context),              'view': view, @@ -554,6 +563,7 @@ class BrowsableAPIRenderer(BaseRenderer):              'breadcrumblist': self.get_breadcrumbs(request),              'allowed_methods': view.allowed_methods,              'available_formats': [renderer.format for renderer in view.renderer_classes], +            'response_headers': response_headers,              'put_form': self.get_rendered_html_form(view, 'PUT', request),              'post_form': self.get_rendered_html_form(view, 'POST', request), @@ -597,7 +607,7 @@ class MultiPartRenderer(BaseRenderer):      media_type = 'multipart/form-data; boundary=BoUnDaRyStRiNg'      format = 'multipart'      charset = 'utf-8' -    BOUNDARY = 'BoUnDaRyStRiNg' +    BOUNDARY = 'BoUnDaRyStRiNg' if django.VERSION >= (1, 5) else b'BoUnDaRyStRiNg'      def render(self, data, accepted_media_type=None, renderer_context=None):          return encode_multipart(self.BOUNDARY, data)  | 
