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.5 Py 3.6 Py 3.7 Py 3.8
Django 2.0 DRF 3.8-3.10 DRF 3.8-3.10 DRF 3.8-3.10 Untested
Django 2.1 DRF 3.8-3.10 DRF 3.8-3.10 DRF 3.8-3.10 Untested
Django 2.2 No DRF 3.8-3.10 DRF 3.8-3.10 DRF 3.8-3.10
Django 3.0 No DRF 3.10 DRF 3.10+ DRF 3.10+

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

Installation

With pip

pip install drf-schema-adapter

From source

Within the source directory:

python setup.py install

Demo application

You can see a demo application running at https://djembersample.pythonanywhere.com/.

Basic usage

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

from drf_auto_endpoint.router import router

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

urlpatterns = [
    ...
    url(r'^api/', include(router.urls)),
    ...
]

Prototyping

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 drf_auto_endpoint.router import router
from my_app.models import MyModel, OtherModel

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

urlpatterns = [
    url(r'^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:

## settings.py

...
REST_FRAMEWORK = {
    'DEFAULT_METADATA_CLASS': 'drf_auto_endpoint.metadata.AutoMetadata',
}

Exporting to the frontend

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

./manage.py export --adapter_name EmberAdapter samples/products

Full documentation

For much more complete documentation, please see: http://drf-schema-adapter.readthedocs.io

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:

ToDo


License information available here.

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