Django REST framework makes it easy to build well-connected, self-describing RESTful Web APIs.
Features:
- Creates awesome self-describing web browse-able APIs.
- Clean, modular design, using Django's class based views.
- Easily extended for custom content types, serialization formats and authentication policies.
- Stable, well tested code-base.
- Active developer community.
Full documentation for the project is available at http://django-rest-framework.org
Issue tracking is on GitHub. General questions should be taken to the discussion group.
Requirements:
- Python (2.5, 2.6, 2.7 supported)
- Django (1.2, 1.3 supported)
To clone the project from GitHub using git:
git clone git@github.com:tomchristie/django-rest-framework.git
To clone the project from Bitbucket using mercurial:
hg clone https://tomchristie@bitbucket.org/tomchristie/django-rest-framework
To install django-rest-framework in a virtualenv environment:
cd django-rest-framework virtualenv --no-site-packages --distribute --python=python2.6 env source env/bin/activate pip install -r requirements.txt # django, coverage
To run the tests:
export PYTHONPATH=. # Ensure djangorestframework is on the PYTHONPATH python djangorestframework/runtests/runtests.py
To run the test coverage report:
export PYTHONPATH=. # Ensure djangorestframework is on the PYTHONPATH python djangorestframework/runtests/runcoverage.py
To run the examples:
pip install -r examples/requirements.txt # pygments, httplib2, markdown cd examples export PYTHONPATH=.. python manage.py syncdb python manage.py runserver
To build the documentation:
pip install -r docs/requirements.txt # sphinx sphinx-build -c docs -b html -d docs/build docs html
To run the tests against the full set of supported configurations:
deactivate # Ensure we are not currently running in a virtualenv tox
To create the sdist packages:
python setup.py sdist --formats=gztar,zip
0.2.3
- Fix some throttling bugs.
X-Throttle
header on throttling.- Support for nesting resources on related models.
0.2.2
- Throttling support complete.
0.2.1
- Couple of simple bugfixes over 0.2.0
0.2.0
- Big refactoring changes since 0.1.0, ask on the discussion group if anything isn't clear. The public API has been massively cleaned up. Expect it to be fairly stable from here on in.
Resource
becomes decoupled intoView
andResource
, your views should now inherit fromView
, notResource
.- The handler functions on views
.get() .put() .post()
etc, no longer have thecontent
andauth
args. Useself.CONTENT
inside a view to access the deserialized, validated content. Useself.user
inside a view to access the authenticated user. allowed_methods
andanon_allowed_methods
are now defunct. if a method is defined, it's available. Thepermissions
attribute on aView
is now used to provide generic permissions checking. Use permission classes such asFullAnonAccess
,IsAuthenticated
orIsUserOrIsAnonReadOnly
to set the permissions.- The
authenticators
class becomesauthentication
. Class names change toAuthentication
. - The
emitters
class becomesrenderers
. Class names change toRenderers
. ResponseException
becomesErrorResponse
.- The mixin classes have been nicely refactored, the basic mixins are now
RequestMixin
,ResponseMixin
,AuthMixin
, andResourceMixin
You can reuse these mixin classes individually without using theView
class.
0.1.1
- Final build before pulling in all the refactoring changes for 0.2, in case anyone needs to hang on to 0.1.
0.1.0
- Initial release.