mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-02-02 20:54:42 +03:00
Prevent re-running deserialization. Closes #1975.
This commit is contained in:
parent
bb21216a7c
commit
041435f4ee
|
@ -523,8 +523,10 @@ class BrowsableAPIRenderer(BaseRenderer):
|
||||||
data = request.data
|
data = request.data
|
||||||
except ParseError:
|
except ParseError:
|
||||||
data = None
|
data = None
|
||||||
|
existing_serializer = serializer
|
||||||
else:
|
else:
|
||||||
data = None
|
data = None
|
||||||
|
existing_serializer = None
|
||||||
|
|
||||||
with override_method(view, request, method) as request:
|
with override_method(view, request, method) as request:
|
||||||
if not self.show_form_for_method(view, method, request, instance):
|
if not self.show_form_for_method(view, method, request, instance):
|
||||||
|
@ -539,9 +541,12 @@ class BrowsableAPIRenderer(BaseRenderer):
|
||||||
):
|
):
|
||||||
return
|
return
|
||||||
|
|
||||||
serializer = view.get_serializer(instance=instance, data=data)
|
if existing_serializer is not None:
|
||||||
if data is not None:
|
serializer = existing_serializer
|
||||||
serializer.is_valid()
|
else:
|
||||||
|
serializer = view.get_serializer(instance=instance, data=data)
|
||||||
|
if data is not None:
|
||||||
|
serializer.is_valid()
|
||||||
form_renderer = self.form_renderer_class()
|
form_renderer = self.form_renderer_class()
|
||||||
return form_renderer.render(serializer.data, self.accepted_media_type, self.renderer_context)
|
return form_renderer.render(serializer.data, self.accepted_media_type, self.renderer_context)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user