REST Framework JSONP
JSONP support for Django REST Framework
Overview
JSONP support extracted as a third party package directly from the official Django REST Framework implementation.
Warning: If you require cross-domain AJAX requests, you should almost certainly be using the more modern approach of CORS as an alternative to JSONP. See the CORS documentation for more details.
The jsonp approach is essentially a browser hack, and is only appropriate for globally readable API endpoints, where GET requests are unauthenticated and do not require any user permissions.
Requirements
- Python (2.7, 3.3, 3.4)
- Django (1.6, 1.7)
Installation
Install using pip...
$ pip install djangorestframework-jsonp
Example
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': (
'rest_framework_jsonp.renderers.JSONPRenderer',
),
}
You can also set the renderer used for an individual view, or viewset, using the APIView class based views.
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework_jsonp.renderers import JSONPRenderer
class ExampleView(APIView):
"""
A view that returns the count of active users in JSONP
"""
renderer_classes = (JSONPRenderer,)
def post(self, request, format=None):
user_count = User.objects.filter(active=True).count()
content = {'user_count': user_count}
return Response(content)
Testing
Install testing requirements.
$ pip install -r requirements-test.txt
Run with runtests.
$ ./runtests.py
You can also use the excellent tox testing tool to run the tests against all supported versions of Python and Django. Install tox globally, and then simply run:
$ tox
Documentation
To build the documentation, you'll need to install mkdocs.
$ pip install mkdocs
To preview the documentation:
$ mkdocs serve
Running at: http://127.0.0.1:8000/
To build the documentation:
$ mkdocs build