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) | 
