diff options
Diffstat (limited to 'rest_framework/renderers.py')
| -rw-r--r-- | rest_framework/renderers.py | 16 | 
1 files changed, 9 insertions, 7 deletions
| diff --git a/rest_framework/renderers.py b/rest_framework/renderers.py index cfcf1f5d..634338e9 100644 --- a/rest_framework/renderers.py +++ b/rest_framework/renderers.py @@ -544,12 +544,12 @@ class BrowsableAPIRenderer(BaseRenderer):          # serializer instance, rather than dynamically creating a new one.          if request.method == method and serializer is not None:              try: -                data = request.data +                kwargs = {'data': request.data}              except ParseError: -                data = None +                kwargs = {}              existing_serializer = serializer          else: -            data = None +            kwargs = {}              existing_serializer = None          with override_method(view, request, method) as request: @@ -569,11 +569,13 @@ class BrowsableAPIRenderer(BaseRenderer):                  serializer = existing_serializer              else:                  if method in ('PUT', 'PATCH'): -                    serializer = view.get_serializer(instance=instance, data=data) +                    serializer = view.get_serializer(instance=instance, **kwargs)                  else: -                    serializer = view.get_serializer(data=data) -                if data is not None: -                    serializer.is_valid() +                    serializer = view.get_serializer(**kwargs) + +            if hasattr(serializer, 'initial_data'): +                serializer.is_valid() +              form_renderer = self.form_renderer_class()              return form_renderer.render(                  serializer.data, | 
