aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/renderers.py
diff options
context:
space:
mode:
authorTom Christie2014-10-01 21:35:27 +0100
committerTom Christie2014-10-01 21:35:27 +0100
commitffc6aa3abcb0f823b43b63db1666913565e6f934 (patch)
tree353e6e03d370dbf1647a73c8fa3edb7f9562e6b4 /rest_framework/renderers.py
parentc171fa21ac62538331755524057d2435f33ec8a5 (diff)
downloaddjango-rest-framework-ffc6aa3abcb0f823b43b63db1666913565e6f934.tar.bz2
More forms support
Diffstat (limited to 'rest_framework/renderers.py')
-rw-r--r--rest_framework/renderers.py25
1 files changed, 23 insertions, 2 deletions
diff --git a/rest_framework/renderers.py b/rest_framework/renderers.py
index 6483a47c..297c60d8 100644
--- a/rest_framework/renderers.py
+++ b/rest_framework/renderers.py
@@ -360,22 +360,43 @@ class HTMLFormRenderer(BaseRenderer):
serializers.MultipleChoiceField: {
'default': 'select_multiple.html',
'checkbox': 'select_checkbox.html'
+ },
+ serializers.ManyRelation: {
+ 'default': 'select_multiple.html',
+ 'checkbox': 'select_checkbox.html'
}
})
+ input_type = ClassLookupDict({
+ serializers.Field: 'text',
+ serializers.EmailField: 'email',
+ serializers.URLField: 'url',
+ serializers.IntegerField: 'number',
+ serializers.DateTimeField: 'datetime-local',
+ serializers.DateField: 'date',
+ serializers.TimeField: 'time',
+ })
+
def render_field(self, field, value, errors, layout=None):
layout = layout or 'vertical'
style_type = field.style.get('type', 'default')
if style_type == 'textarea' and layout == 'inline':
style_type = 'default'
+
+ input_type = self.input_type[field]
+ if input_type == 'datetime-local':
+ value = value.rstrip('Z')
+
base = self.field_templates[field][style_type]
template_name = 'rest_framework/fields/' + layout + '/' + base
template = loader.get_template(template_name)
context = Context({
'field': field,
'value': value,
- 'errors': errors
+ 'errors': errors,
+ 'input_type': input_type
})
+
return template.render(context)
def render(self, data, accepted_media_type=None, renderer_context=None):
@@ -388,7 +409,7 @@ class HTMLFormRenderer(BaseRenderer):
template = loader.get_template(self.template)
context = RequestContext(request, {
'form': data,
- 'layout': getattr(getattr(data, 'Meta', None), 'layout', 'vertical'),
+ 'layout': getattr(getattr(data, 'Meta', None), 'layout', 'horizontal'),
'renderer': self
})
return template.render(context)