2012-08-05 29 views
6

django rest framework sürüm notları JSONP desteğinin 0.3.0'a eklendiğini iddia ediyor. Ayrıca çerçevede bir JSONPRenderer sınıfı buldum. Ancak, bu şeyin nasıl kullanılacağına dair bir belge bulamıyorum ... jsonp için oldukça yeni.django-rest-framework ile jsonp kullanarak

Hiç kimse django dinlenme çerçevesiyle jsonp'u başarıyla kullandı mı?

cevap

5

Bunu gönderirken yanıtı (veya en azından AN cevabı) buldum. Jsonp renderer'ın varsayılan olarak bir ModelResource üzerinde mevcut olduğu anlaşılmaktadır, bu nedenle tek yapmanız gereken, istekte bulunan URL'ye "? Format = json-p" eklemektir.

+2

[Burada (http://django-rest-framework.org/api-guide/renderers.html#jsonprenderer) resmi belgeler. – chaselee

+2

Sadece googling herkese birkaç dakika kaydetmek için: REST_FRAMEWORK = { 'DEFAULT_RENDERER_CLASSES': ( 'rest_framework.renderers.JSONRenderer', 'rest_framework.renderers.JSONPRenderer', 'rest_framework.renderers.BrowsableAPIRenderer', ), – vincent

+1

güncelleştirmesi: bu, django geri kalan çerçeve dağıtımının bir parçasıydı, ancak şu anda üçüncü taraf paketi olarak kullanılabilir: http://jpadilla.github.io/django-rest-framework-jsonp/ –

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

Sadece birisi jsonp'u arıyorsa.

Birinci (docs):

pip install djangorestframework-jsonp

Ve sonra DİNLENME çerçeve ayarlarını değiştirmek.

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

Son olarak Url'nizde ?format=jsonp değil ?format=json-p içerdiğinden emin olun.

İlgili konular