aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/renderers.py
diff options
context:
space:
mode:
authorTom Christie2013-08-28 21:52:56 +0100
committerTom Christie2013-08-28 21:52:56 +0100
commit18007d68464b0cfab970e2a60aed0d41c4de4dac (patch)
tree7964747ece4cebc71f1bd73be81a38dbd42408e4 /rest_framework/renderers.py
parent8d590ebfded0968e458f8e3a87efabec8384586e (diff)
downloaddjango-rest-framework-18007d68464b0cfab970e2a60aed0d41c4de4dac.tar.bz2
Simplifying raw data renderering support
Diffstat (limited to 'rest_framework/renderers.py')
-rw-r--r--rest_framework/renderers.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/rest_framework/renderers.py b/rest_framework/renderers.py
index cc8de959..cd55c783 100644
--- a/rest_framework/renderers.py
+++ b/rest_framework/renderers.py
@@ -21,7 +21,7 @@ from rest_framework.compat import six
from rest_framework.compat import smart_text
from rest_framework.compat import yaml
from rest_framework.settings import api_settings
-from rest_framework.request import clone_request
+from rest_framework.request import clone_request, is_form_media_type
from rest_framework.utils import encoders
from rest_framework.utils.breadcrumbs import get_breadcrumbs
from rest_framework import exceptions, status, VERSION
@@ -482,7 +482,7 @@ class BrowsableAPIRenderer(BaseRenderer):
if method in ('DELETE', 'OPTIONS'):
return True # Don't actually need to return a form
- if not getattr(view, 'get_serializer', None) or not any(parser.supports_html_forms for parser in view.parser_classes):
+ if not getattr(view, 'get_serializer', None) or not any(is_form_media_type(parser.media_type) for parser in view.parser_classes):
return
serializer = view.get_serializer(instance=obj)
@@ -565,11 +565,16 @@ class BrowsableAPIRenderer(BaseRenderer):
obj = getattr(view, 'object', None)
if getattr(view, 'get_serializer', None):
serializer = view.get_serializer(instance=obj)
+ for field_name, field in serializer.fields.items():
+ if field.read_only:
+ del serializer.fields[field_name]
else:
serializer = None
parsers = []
for parser_class in view.parser_classes:
+ if is_form_media_type(parser_class.media_type):
+ continue
content = None
renderer_class = getattr(parser_class, 'renderer_class', None)
if renderer_class and serializer:
@@ -650,3 +655,4 @@ class MultiPartRenderer(BaseRenderer):
def render(self, data, accepted_media_type=None, renderer_context=None):
return encode_multipart(self.BOUNDARY, data)
+