Software ecosystems establish a community that further accelerates the sharing of knowledge, content, issues, expertise and skills.— Jan Bosch
About Third Party Packages
Third Party Packages allow developers to share code that extends the functionality of Django REST framework, in order to support additional use-cases. We support, encourage and strongly favor the creation of Third Party Packages to encapsulate new behavior rather than adding additional functionality directly to Django REST Framework. We aim to make creating third party packages as easy as possible, whilst keeping a simple and well maintained core API. By promoting third party packages we ensure that the responsibility for a package remains with its author. If a package proves suitably popular it can always be considered for inclusion into the core REST framework.Creating a Third Party Package
Version Compatibility
Sometimes, in order to ensure your code works on various different versions of Django, Python or third party libraries, you’ll need to run slightly different code depending on the environment. Any code that branches in this way should be isolated into acompat.py module, and should provide a single common interface that the rest of the codebase can use.
Check out Django REST framework’s compat.py for an example.
Publishing Your Package
Once your package is decently documented and available on PyPI, you might want share it with others that might find it useful.Add to Django Packages
Add your package to the REST Framework grid on Django Packages.
Update DRF Documentation
Create a Pull Request on GitHub to add a link to your package in the main REST framework documentation. Add your package under Third party packages of the relevant API Guide section.
Announce on Discussion Group
Let others know about your package through the discussion group.
Existing Third Party Packages
Django REST Framework has a growing community of developers, packages, and resources. Check out a grid detailing all the packages and ecosystem around Django REST Framework at Django Packages.To submit new content, create a pull request.
Async Support
adrf
Provides async Views, ViewSets, and Serializers for Django REST Framework
Authentication
Django OAuth Toolkit
OAuth 2.0 support
SimpleJWT
JSON Web Token authentication
Djoser
Registration, login, logout, and password reset views
DRF Auth Kit
Complete REST authentication with JWT, social login, and MFA
dj-rest-auth
Authentication endpoints including social media auth
DRF Passwordless
Passwordless authentication via email and mobile
Hawk REST
Hawk HTTP Authorization
Django PyOIDC
OpenID Connect (OIDC) authentication support
Permissions
DRF Access Policy
Declarative permissions inspired by AWS IAM policies
DRY Rest Permissions
Simple way to define permissions for individual actions
Rest Condition
Build complex permissions in a simple way
Axioms DRF
Fine-grained authorization with JWT tokens
Serializers
DRF GIS
Geographic add-ons for spatial data
Django Pydantic Field
Use Pydantic models with Django’s JSONField
DRF Pydantic
Use Pydantic for data validation and serialization
DRF JSON API
JSON API spec compliant tools
DRF Flex Fields
Dynamic field expansion via URL parameters
Django RESTQL
GraphQL-like API for field selection
DRF Dataclasses
Automatic serializer generation for Python dataclasses
GraphWrap
Transform REST API into GraphQL API
Serializer Fields
DRF Extra Fields
Additional serializer field types
DRF Compound Fields
Compound serializer fields like lists of simple values
VersatileImageField
Serve images in multiple sizes from a single field
Views
DRF Multiple Models
Send multiple serialized models in one request
DRF Typed Views
Use type annotations for parameter validation
Rest Framework Actions
Control over each ViewSet action
Routers
DRF Nested Routers
Routers for working with nested resources
wq.db.rest
Admin-style model registration with default URLs
Parsers & Renderers
DRF CSV
CSV renderer support
DRF MessagePack
MessagePack renderer and parser
DRF Camel Case
Camel case JSON renderers and parsers
Rest Pandas
Pandas DataFrame renderers (Excel, CSV, SVG)
DRF RapidJSON
Fast JSON rendering with RapidJSON
Filtering
Django URL Filter
Safe filtering via human-friendly URLs
DRF URL Filter
Clean and configurable queryset filtering
DRF Guardian
Integration with django-guardian object permissions
Utilities
DRF Extensions
Collection of custom extensions
DRF Tracking
Track requests to API views
DRF Standardized Errors
Standardize error responses across endpoints
Django Elasticsearch DSL DRF
Elasticsearch integration with DRF
Wireup
Dependency injection with Django integration
Apitally
API monitoring and request logging
Fast DRF
Model-based library for faster API development
Django Lisan
Lightweight translation and localization framework
UI Customization
DRF Restwind
Modern UI with TailwindCSS and DaisyUI
DRF Redesign
Fresh look using Bootstrap 5
DRF Material
Material Design themed browsable API
Project Templates
Cookiecutter Django REST
Cookiecutter template for quickly starting DRF projects
