'Returns a form that allows for arbitrary content types to be tunneled
via standard HTML forms.
(Which are typically application/x-www-form-urlencoded)'

def get_raw_data_form(self, data, view, method, request):

    serializer = getattr(data, u'serializer', None)
    if (serializer and (not getattr(serializer, u'many', False))):
        instance = getattr(serializer, u'instance', None)
        if isinstance(instance, Page):
            instance = None
    else:
        instance = None
    with override_method(view, request, method) as request:
        if (not self.show_form_for_method(view, method, request, instance)):
            return
        default_parser = view.parser_classes[0]
        renderer_class = getattr(default_parser, u'renderer_class', None)
        if (hasattr(view, u'get_serializer') and renderer_class):
            if (method in (u'PUT', u'PATCH')):
                serializer = view.get_serializer(instance=instance)
            else:
                serializer = view.get_serializer()
            renderer = renderer_class()
            accepted = self.accepted_media_type
            context = self.renderer_context.copy()
            context[u'indent'] = 4
            data = {k: v for (k, v) in serializer.data.items() if (not isinstance(serializer.fields[k], serializers.HiddenField))}
            content = renderer.render(data, accepted, context)
        else:
            content = None
        media_types = [parser.media_type for parser in view.parser_classes]
        choices = [(media_type, media_type) for media_type in media_types]
        initial = media_types[0]
        class GenericContentForm(forms.Form, ):
            _content_type = forms.ChoiceField(label=u'Media    type', choices=choices, initial=initial, widget=forms.Select(attrs={u'data-override': u'content-type'}))
            _content = forms.CharField(label=u'Content', widget=forms.Textarea(attrs={u'data-override': u'content'}), initial=content)
        return GenericContentForm()
