Skip to content

praekelt/djangorestframework-extras

Repository files navigation

Django Rest Framework Extras

https://travis-ci.org/praekelt/djangorestframework-extras.svg?branch=develop

DRFE generates RESTful API's for any Django models. It builds on Django Rest Framework.

  1. pip install djangorestframework
  2. Add rest_framework to your INSTALLED_APPS setting in settings.py.
  1. Install or add djangorestframework-extras to your Python path.
  2. Add rest_framework_extras to your INSTALLED_APPS setting in settings.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, HyperlinkedRelatedField and HyperlinkedModelSerializer

User permissions and the custom UsersViewSet

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')

Discovery and registration of ViewSets

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:

  1. Line 1 & 3: The router and DefaultRouter classes connects the views and urls automatically and also creates the API root.
  2. Line 5: The new discover function generates default serializers and viewsets. This function should be run before normal registration.
  3. Line 6: The new register function registers all viewsets (including the UsersViewSet), overriding any items already registered with the same name.
  4. Line 9: Define the urls by including router.urls.

Available Settings

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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages