Skip to main content

Making using Django with frontend libraries and frameworks DRYer

Project description

DRF-schema-adapter Build Status

drf-schema-adapter is a set of tools used to make it as straight-forward to declare an API endpoint as it is to declare a new ModelAdmin in Django and export the corresponding definition to frontend frameworks and libraries.

Compatibility Matrix

DRF-schema-adapter is compatible with the following matrix

Py 3.8 Py 3.9 Py 3.10 Py 3.11
Django 3.2 DRF 3.12+ DRF 3.12+ N/A N/A
Django 4.0 DRF 3.12+ DRF 3.12+ DRF 3.12+ N/A
Django 4.1 DRF 3.12+ DRF 3.12+ DRF 3.12+ DRF 3.12+

:warning: For Python 2.7 or Django 1.x support, please use versions 1.x or prior :warning: For Django Version 3.1 or prior, use version 2.x

:warning: For Python 3.11 compatibility, you will have (for now) to install Inflector directly from the repo:

pip install git+


With pip

pip install drf-schema-adapter

If you are using python 3.11, you will have to also install Inflector directly from the repo, pending the release of Inflector 3.0.2

pip install git+

From source

Within the source directory:

python install

Demo application

You can see a demo application running at

Basic usage

First of all you'll need to import the default EndpointRouter in your file.

from drf_auto_endpoint.router import router

As well as add its urls to your urlpatterns in, the same way you would with DRF's DefaultRouter.

urlpatterns = [
    path("api/", include(router.urls)),


The quickest way to get a working endpoint is to register a model with the router. Register accepts an optional keyword argument for the url associated to that endpoint. By default the url for an endpoint willbe app_label/verbose_name_plural

from django.urls import include, path
from drf_auto_endpoint.router import router
from my_app.models import MyModel, OtherModel

router.register(OtherModel, url='my_custom_url')

urlpatterns = [
    path("api/", include(router.urls)),

Adding schema information to your OPTIONS calls

Django REST framework provides the ability to customize those calls thanks to metadata classes.

Setup DRF to use one of DRF-schema-adapter's metadata classes to get schema information:


    'DEFAULT_METADATA_CLASS': 'drf_auto_endpoint.metadata.AutoMetadata',

Exporting to the frontend

First add 'export_app' to your setting's INSTALLED_APPS, then run:

./ export --adapter_name EmberAdapter samples/products

Full documentation

For much more complete documentation, please see:

Related projects

Contibuting guide-lines

If you'd like to contibute to DRF-schema-adapter*, you are more than welcome to do so. In order to make contributing to this project a rich experience for everyone, please follow these guide-lines:

  • First, fork the project with your own GitHub account, build your code on your own repository and submit a pull-request once your contribution is ready.
  • Before contributing a bug-fix or new feature, create an issue explaining what the problem/need is first. When submitting your pull-request, make sure to reference the original issue.
  • For any code you contribute, make sure to follow PEP8 recommendation (soft line-limit 100, hard limit 120).
  • For bug-fixes, please first write a test that will fail with the current code and passes using your patch. For easier evaluation, please do so in 2 separate commits
  • For new features, if your feature can be implemented as a third-party app (like new adapters), please don't contribute them to this repo, publish your own application and open an issue telling us about it. We will make sure to add a link to your application in this README.
  • Read and respect the Code Of Conduct


  • Write better documentation
  • Write more/better tests

License information available here.

Contributors code of conduct is available here. Note that this COC will be enforced.

Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

drf-schema-adapter-3.0.6.tar.gz (34.2 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page