Skip to content

Commit 6ec96d0

Browse files
committed
Resolve PUT and POST buttons in browsable API
1 parent 9c6bead commit 6ec96d0

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

rest_framework/renderers.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -429,7 +429,10 @@ def render(self, data, accepted_media_type=None, renderer_context=None):
429429
style['base_template'] = self.base_template
430430
style['renderer'] = self
431431

432-
if 'template' in style:
432+
# This API needs to be finessed and finalized for 3.1
433+
if 'template' in renderer_context:
434+
template_name = renderer_context['template']
435+
elif 'template' in style:
433436
template_name = style['template']
434437
else:
435438
template_name = style['template_pack'].strip('/') + '/' + style['base_template']
@@ -555,7 +558,14 @@ def get_rendered_html_form(self, data, view, method, request):
555558
if data is not None:
556559
serializer.is_valid()
557560
form_renderer = self.form_renderer_class()
558-
return form_renderer.render(serializer.data, self.accepted_media_type, self.renderer_context)
561+
return form_renderer.render(
562+
serializer.data,
563+
self.accepted_media_type,
564+
dict(
565+
self.renderer_context.items() +
566+
[('template', 'rest_framework/api_form.html')]
567+
)
568+
)
559569

560570
def get_raw_data_form(self, data, view, method, request):
561571
"""
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{% load rest_framework %}
2+
{% csrf_token %}
3+
{% for field in form %}
4+
{% if not field.read_only %}
5+
{% render_field field style=style %}
6+
{% endif %}
7+
{% endfor %}
8+
<!-- form.non_field_errors -->

0 commit comments

Comments
 (0)