aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Christie2014-11-20 13:43:38 +0000
committerTom Christie2014-11-20 13:43:38 +0000
commit6ec96d0bac1e738aceec9f8c21282c172120c7ac (patch)
tree33481b5daa191212fb609ee1bb61a8e3efc44c78
parent9c6bead8b6d3f9ae11e9859ed305e8d0f7a9e0d8 (diff)
downloaddjango-rest-framework-6ec96d0bac1e738aceec9f8c21282c172120c7ac.tar.bz2
Resolve PUT and POST buttons in browsable API
-rw-r--r--rest_framework/renderers.py14
-rw-r--r--rest_framework/templates/rest_framework/api_form.html8
2 files changed, 20 insertions, 2 deletions
diff --git a/rest_framework/renderers.py b/rest_framework/renderers.py
index 6596fc44..8717137a 100644
--- a/rest_framework/renderers.py
+++ b/rest_framework/renderers.py
@@ -429,7 +429,10 @@ class HTMLFormRenderer(BaseRenderer):
style['base_template'] = self.base_template
style['renderer'] = self
- if 'template' in style:
+ # This API needs to be finessed and finalized for 3.1
+ if 'template' in renderer_context:
+ template_name = renderer_context['template']
+ elif 'template' in style:
template_name = style['template']
else:
template_name = style['template_pack'].strip('/') + '/' + style['base_template']
@@ -555,7 +558,14 @@ class BrowsableAPIRenderer(BaseRenderer):
if data is not None:
serializer.is_valid()
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,
+ dict(
+ self.renderer_context.items() +
+ [('template', 'rest_framework/api_form.html')]
+ )
+ )
def get_raw_data_form(self, data, view, method, request):
"""
diff --git a/rest_framework/templates/rest_framework/api_form.html b/rest_framework/templates/rest_framework/api_form.html
new file mode 100644
index 00000000..96f924ed
--- /dev/null
+++ b/rest_framework/templates/rest_framework/api_form.html
@@ -0,0 +1,8 @@
+{% load rest_framework %}
+{% csrf_token %}
+{% for field in form %}
+ {% if not field.read_only %}
+ {% render_field field style=style %}
+ {% endif %}
+{% endfor %}
+<!-- form.non_field_errors -->