diff options
| author | Tom Christie | 2011-12-29 13:24:52 +0000 | 
|---|---|---|
| committer | Tom Christie | 2011-12-29 13:24:52 +0000 | 
| commit | 1bdc5eacc6290c486796eb5ab8fa29092137dab6 (patch) | |
| tree | aa1728220a65755d59189b6aa3f898292f673071 /djangorestframework/renderers.py | |
| parent | 500b0dcddc2d965a595eadadc70fb06d2648cc96 (diff) | |
| download | django-rest-framework-1bdc5eacc6290c486796eb5ab8fa29092137dab6.tar.bz2 | |
Add JSONP.  Fixes #82
Diffstat (limited to 'djangorestframework/renderers.py')
| -rw-r--r-- | djangorestframework/renderers.py | 24 | 
1 files changed, 24 insertions, 0 deletions
| diff --git a/djangorestframework/renderers.py b/djangorestframework/renderers.py index 3f951ba1..2affd7f2 100644 --- a/djangorestframework/renderers.py +++ b/djangorestframework/renderers.py @@ -26,6 +26,7 @@ __all__ = (      'BaseRenderer',      'TemplateRenderer',      'JSONRenderer', +    'JSONPRenderer',      'DocumentingHTMLRenderer',      'DocumentingXHTMLRenderer',      'DocumentingPlainTextRenderer', @@ -113,6 +114,28 @@ class JSONRenderer(BaseRenderer):          return json.dumps(obj, cls=DateTimeAwareJSONEncoder, indent=indent, sort_keys=sort_keys) +class JSONPRenderer(JSONRenderer): +    """ +    Renderer which serializes to JSONP +    """ +     +    media_type = 'application/json-p' +    format = 'json-p' +    renderer_class = JSONRenderer +    callback_parameter = 'callback' + +    def _get_callback(self): +        return self.view.request.GET.get(self.callback_parameter, self.callback_parameter) + +    def _get_renderer(self): +        return self.renderer_class(self.view) + +    def render(self, obj=None, media_type=None): +        callback = self._get_callback() +        json = self._get_renderer().render(obj, media_type) +        return "%s(%s);" % (callback, json) + +  class XMLRenderer(BaseRenderer):      """      Renderer which serializes to XML. @@ -376,6 +399,7 @@ class DocumentingPlainTextRenderer(DocumentingTemplateRenderer):  DEFAULT_RENDERERS = ( JSONRenderer, +                      JSONPRenderer,                        DocumentingHTMLRenderer,                        DocumentingXHTMLRenderer,                        DocumentingPlainTextRenderer, | 
