DRFE generates RESTful API's for any Django models. It builds on Django Rest Framework.
Table of Contents
- pip install
djangorestframework - Add
rest_frameworkto yourINSTALLED_APPSsetting insettings.py.
- Install or add
djangorestframework-extrasto your Python path. - Add
rest_framework_extrasto yourINSTALLED_APPSsetting insettings.py.
- Generating default serializers and viewsets for all known applications to create RESTful API's.
- Registering all viewsets known to the application with the Django Rest Framework router.
- Custom serializers and permissions for the default user, the staff users and superusers.
- Custom FormMixin that Delegates validation to a normal Django form.
- Custom Hyperlink fields and serializer,
HyperlinkedRelatedFieldandHyperlinkedModelSerializer
djangorestframework-extras provides a custom ViewSet UsersViewSet with serializers and permissions for the default user, the staff user and the superuser.
Register UsersViewSet through the DefaultRouter:
from rest_framework_extras.users.viewsets import UsersViewSet router = routers.DefaultRouter() router.register(r'users', UsersViewSet, 'user')
Enable discovery and registration of default serializers and viewsets by adding the following to urls.py:
from rest_framework import routers
import rest_framework_extras
router = routers.DefaultRouter()
rest_framework_extras.discover(router)
rest_framework_extras.register(router)
urlpatterns = [
url(r"^api/(?P<version>(v1))/", include(router.urls))
]
Going through the code line by line:
- Line 1 & 3: The router and DefaultRouter classes connects the views and urls automatically and also creates the API root.
- Line 5: The new discover function generates default serializers and viewsets. This function should be run before normal registration.
- Line 6: The new register function registers all viewsets (including the UsersViewSet), overriding any items already registered with the same name.
- Line 9: Define the urls by including router.urls.
REST_FRAMEWORK_EXTRAS
blacklist: A dictionary of the models to blacklist. By default the following models are blacklisted:
"REST_FRAMEWORK_EXTRAS": {
"blacklist": {
"sessions-session": {},
"admin-logentry": {}
},
"authentication-classes": (SessionAuthentication, BasicAuthentication),
"permission-classes": (DjangoModelPermissions,)
}
Change the name of the registered user model by changing the mapping parameter, such as:
rest_framework_extras.register(router, mapping=(("user", UsersViewSet),))
Restrict models that will be displayed through the Django Rest Framework by using the only and override parameters. Define a comma separated list, such as:
rest_framework_extras.discover(router, only=["auth-user", "auth-permission"])
todo: document override
Run tests by using the following command:
python manage.py test rest_framework_extras.tests --settings=rest_framework_extras.tests.settings.111
Please see the License requirements in the LICENSE file of this repository.