diff options
| author | Tom Christie | 2013-10-02 16:13:34 +0100 | 
|---|---|---|
| committer | Tom Christie | 2013-10-02 16:13:34 +0100 | 
| commit | 8d4ba478cc5725b4de6ab86b4825b1ea94cb4c7b (patch) | |
| tree | 75187b1e1d5bd77dd4f137b467da5ce7a5b09603 /rest_framework/renderers.py | |
| parent | a14f1e886402b8d0f742fdbb912b03a4004e1735 (diff) | |
| download | django-rest-framework-8d4ba478cc5725b4de6ab86b4825b1ea94cb4c7b.tar.bz2 | |
Fix rendering of forms and add error rendering on HTML form
Diffstat (limited to 'rest_framework/renderers.py')
| -rw-r--r-- | rest_framework/renderers.py | 16 | 
1 files changed, 12 insertions, 4 deletions
| diff --git a/rest_framework/renderers.py b/rest_framework/renderers.py index 0e17edaf..fe4f43d4 100644 --- a/rest_framework/renderers.py +++ b/rest_framework/renderers.py @@ -419,6 +419,13 @@ class BrowsableAPIRenderer(BaseRenderer):          In the absence of the View having an associated form then return None.          """ +        if request.method == method: +            data = request.DATA +            files = request.FILES +        else: +            data = None +            files = None +          with override_method(view, request, method) as request:              obj = getattr(view, 'object', None)              if not self.show_form_for_method(view, method, request, obj): @@ -431,9 +438,10 @@ class BrowsableAPIRenderer(BaseRenderer):                  or not any(is_form_media_type(parser.media_type) for parser in view.parser_classes)):                  return -            serializer = view.get_serializer(instance=obj) - +            serializer = view.get_serializer(instance=obj, data=data, files=files) +            serializer.is_valid()              data = serializer.data +              form_renderer = self.form_renderer_class()              return form_renderer.render(data, self.accepted_media_type, self.renderer_context) @@ -525,6 +533,7 @@ class BrowsableAPIRenderer(BaseRenderer):          renderer = self.get_default_renderer(view) +        raw_data_post_form = self.get_raw_data_form(view, 'POST', request)          raw_data_put_form = self.get_raw_data_form(view, 'PUT', request)          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 @@ -543,12 +552,11 @@ class BrowsableAPIRenderer(BaseRenderer):              'put_form': self.get_rendered_html_form(view, 'PUT', request),              'post_form': self.get_rendered_html_form(view, 'POST', request), -            'patch_form': self.get_rendered_html_form(view, 'PATCH', request),              'delete_form': self.get_rendered_html_form(view, 'DELETE', request),              'options_form': self.get_rendered_html_form(view, 'OPTIONS', request),              'raw_data_put_form': raw_data_put_form, -            'raw_data_post_form': self.get_raw_data_form(view, 'POST', request), +            'raw_data_post_form': raw_data_post_form,              'raw_data_patch_form': raw_data_patch_form,              'raw_data_put_or_patch_form': raw_data_put_or_patch_form, | 
