diff options
| author | Keats | 2014-02-21 17:12:41 +0000 | 
|---|---|---|
| committer | Keats | 2014-02-26 23:47:35 +0000 | 
| commit | 6cd0394e20c16828d14257a7360e9abef2c3e674 (patch) | |
| tree | bf7ab15a2ea0530bbaea448012e48d7d9581f8d3 /rest_framework | |
| parent | 6e92e415aa7dd6871ef7d6500a85cacebde8dca2 (diff) | |
| download | django-rest-framework-6cd0394e20c16828d14257a7360e9abef2c3e674.tar.bz2 | |
Display the media type of the API response on the browsable API
Diffstat (limited to 'rest_framework')
| -rw-r--r-- | rest_framework/renderers.py | 11 | ||||
| -rw-r--r-- | rest_framework/templates/rest_framework/base.html | 2 | ||||
| -rw-r--r-- | rest_framework/tests/test_renderers.py | 12 | 
3 files changed, 23 insertions, 2 deletions
diff --git a/rest_framework/renderers.py b/rest_framework/renderers.py index e8afc26d..7cf1c051 100644 --- a/rest_framework/renderers.py +++ b/rest_framework/renderers.py @@ -427,7 +427,7 @@ class BrowsableAPIRenderer(BaseRenderer):                  files = request.FILES              except ParseError:                  data = None -                files = None         +                files = None          else:              data = None              files = None @@ -544,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, @@ -555,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), diff --git a/rest_framework/templates/rest_framework/base.html b/rest_framework/templates/rest_framework/base.html index d19d5a2b..7067ee2f 100644 --- a/rest_framework/templates/rest_framework/base.html +++ b/rest_framework/templates/rest_framework/base.html @@ -118,7 +118,7 @@              </div>              <div class="response-info">                  <pre class="prettyprint"><div class="meta nocode"><b>HTTP {{ response.status_code }} {{ response.status_text }}</b>{% autoescape off %} -{% for key, val in response.items %}<b>{{ key }}:</b> <span class="lit">{{ val|break_long_headers|urlize_quoted_links }}</span> +{% for key, val in response_headers.items %}<b>{{ key }}:</b> <span class="lit">{{ val|break_long_headers|urlize_quoted_links }}</span>  {% endfor %}  </div>{{ content|urlize_quoted_links }}</pre>{% endautoescape %}              </div> diff --git a/rest_framework/tests/test_renderers.py b/rest_framework/tests/test_renderers.py index fb33df2c..0f3432c9 100644 --- a/rest_framework/tests/test_renderers.py +++ b/rest_framework/tests/test_renderers.py @@ -256,6 +256,18 @@ class RendererEndToEndTests(TestCase):          self.assertEqual(resp.get('Content-Type', None), None)          self.assertEqual(resp.status_code, status.HTTP_204_NO_CONTENT) +    def test_contains_headers_of_api_response(self): +        """ +        Issue #1437 + +        Test we display the headers of the API response and not those from the +        HTML response +        """ +        resp = self.client.get('/html1') +        self.assertContains(resp, '>GET, HEAD, OPTIONS<') +        self.assertContains(resp, '>application/json<') +        self.assertNotContains(resp, '>text/html; charset=utf-8<') +  _flat_repr = '{"foo": ["bar", "baz"]}'  _indented_repr = '{\n  "foo": [\n    "bar",\n    "baz"\n  ]\n}'  | 
