diff options
| author | Tom Christie | 2014-10-01 21:35:27 +0100 |
|---|---|---|
| committer | Tom Christie | 2014-10-01 21:35:27 +0100 |
| commit | ffc6aa3abcb0f823b43b63db1666913565e6f934 (patch) | |
| tree | 353e6e03d370dbf1647a73c8fa3edb7f9562e6b4 /rest_framework/renderers.py | |
| parent | c171fa21ac62538331755524057d2435f33ec8a5 (diff) | |
| download | django-rest-framework-ffc6aa3abcb0f823b43b63db1666913565e6f934.tar.bz2 | |
More forms support
Diffstat (limited to 'rest_framework/renderers.py')
| -rw-r--r-- | rest_framework/renderers.py | 25 |
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) |
