使用jsonp与Django-rest-framework

6
Django rest框架的发布说明声称在0.3.0版中添加了对JSONP的支持。我还在框架中找到了一个JSONPRenderer类。但是,我似乎找不到如何使用这个东西的任何文档...我对jsonp还比较新手。
是否有人曾经成功地将jsonp与django rest框架一起使用过?
3个回答

5
发布此文章时,我找到了答案(或者至少是一个答案)。看起来jsonp渲染器在ModelResource上默认可用,所以您只需要在请求的URL中添加“?format=json-p”即可。

2
这是官方文档:http://django-rest-framework.org/api-guide/renderers.html#jsonprenderer - chaselee
2
为了节省大家谷歌的几分钟时间:REST_FRAMEWORK = { 'DEFAULT_RENDERER_CLASSES': ( 'rest_framework.renderers.JSONRenderer', 'rest_framework.renderers.JSONPRenderer', 'rest_framework.renderers.BrowsableAPIRenderer', ), } - vincent
1
更新:它曾经是Django Rest框架分发的一部分,但现在作为第三方包可用 http://jpadilla.github.io/django-rest-framework-jsonp/ - David Lam

2

如果有人正在寻找jsonp,请注意以下内容。

首先,请参阅文档 (docs):

pip install djangorestframework-jsonp

然后修改您的REST框架设置。

REST_FRAMEWORK = {
  'DEFAULT_RENDERER_CLASSES': (
    'rest_framework_jsonp.renderers.JSONPRenderer',
  ),
}

最后请确保您的URL包含?format=jsonp而不是?format=json-p

0
from rest_framework.views import APIView
from rest_framework_jsonp.renderers import JSONPRenderer, JSONRenderer
from rest_framework.response import Response

class YourClass(APIView):
    renderer_classes = (JSONPRenderer, JSONRenderer)

    def get(self, request, *args, **kwargs):
        your_result = {{ your serialized result }}
        return Response({'status': 'success', 'result': your_result})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接