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 |
