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