Skip to main content
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.
If you have an idea for a new feature please consider how it may be packaged as a Third Party Package. We’re always happy to discuss ideas on the discussion group.

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 a compat.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.
1

Add to Django Packages

Add your package to the REST Framework grid on Django Packages.
2

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.
3

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

Build docs developers (and LLMs) love