diff options
| author | Tom Christie | 2013-05-18 17:21:43 +0100 | 
|---|---|---|
| committer | Tom Christie | 2013-05-18 17:21:43 +0100 | 
| commit | 0d3d66cb0232e1067600ef22fcf88937ac6bee9d (patch) | |
| tree | e39f1750d919026607ba2d99610207e5fecb2e37 /rest_framework/response.py | |
| parent | 5bebd29f11dd9268b9a23c27cf58c8440664f5e9 (diff) | |
| download | django-rest-framework-0d3d66cb0232e1067600ef22fcf88937ac6bee9d.tar.bz2 | |
Added proper charset support
Diffstat (limited to 'rest_framework/response.py')
| -rw-r--r-- | rest_framework/response.py | 18 | 
1 files changed, 11 insertions, 7 deletions
| diff --git a/rest_framework/response.py b/rest_framework/response.py index 40372f22..32e74a45 100644 --- a/rest_framework/response.py +++ b/rest_framework/response.py @@ -18,7 +18,7 @@ class Response(SimpleTemplateResponse):      def __init__(self, data=None, status=200,                   template_name=None, headers=None, -                 exception=False): +                 exception=False, charset=None):          """          Alters the init arguments slightly.          For example, drop 'template_name', and instead use 'data'. @@ -30,6 +30,7 @@ class Response(SimpleTemplateResponse):          self.data = data          self.template_name = template_name          self.exception = exception +        self.charset = charset          if headers:              for name, value in six.iteritems(headers): @@ -39,18 +40,21 @@ class Response(SimpleTemplateResponse):      def rendered_content(self):          renderer = getattr(self, 'accepted_renderer', None)          media_type = getattr(self, 'accepted_media_type', None) -        charset = getattr(self, 'charset', None)          context = getattr(self, 'renderer_context', None)          assert renderer, ".accepted_renderer not set on Response"          assert media_type, ".accepted_media_type not set on Response"          assert context, ".renderer_context not set on Response"          context['response'] = self -        if charset is not None: -            ct = "{0}; charset={1}".format(media_type, charset) + +        if self.charset is None: +            self.charset = renderer.charset + +        if self.charset is not None: +            content_type = "{0}; charset={1}".format(media_type, self.charset)          else: -            ct = media_type -        self['Content-Type'] = ct +            content_type = media_type +        self['Content-Type'] = content_type          return renderer.render(self.data, media_type, context)      @property @@ -71,4 +75,4 @@ class Response(SimpleTemplateResponse):          for key in ('accepted_renderer', 'renderer_context', 'data'):              if key in state:                  del state[key] -        return state
\ No newline at end of file +        return state | 
