DRF: Быстрый старт

Используя pip

pip install drf-schema-adapter

Из исходного кода

Из каталога исходного кода:

python setup.py install

Основное использование

Автоматические конечные точки

Благодаря drf_auto_endpoint, DRF-schema-adapter помогает Вам зарегистирировать конечные точки так же легко, как зарегистрировать базовые классы admin

Сначала, для регистрации конечных точек вам необходимо импортировать роутер drf_auto_endpoint а так же модели, которые вы хотите зарегистировать в вашем urls.py

## urls.py

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)),
]

Если же вы не хотите импортировать модели напрямую в ваш urls.py, вы можете воспользоваться возможностью автоматического обнаружения, и добавить регистрации в файл endpoints.py вашего приложения

## urls.py

from drf_auto_endpoint.router import router

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

from drf_auto_endpoint.router import router
from .models import MyModel

router.register(MyModel)

Метаданные

DRF-schema-adapter так же поставляется с классами метаданных и миксинов для использования с Django REST Framework (DRF). Эти классы и миксины предоставляют расширенную информацию о API и полях, при запросе методом OPTIONS к корню api

Хотя классы метаданных и миксины лучше всего работают с классами Endpoint DRF-schema-adapter, они так же совместимы с классами DRF (Model)ViewSet и (Model)Serializer

Для активации расширенных метаданных нужно настроить их в файле settings.py

## settings.py

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

Экспорт определений сериализаторов в модели фронтэнда

Одна из основноый сложностей при написании приложениий с бэкэндом и фронтэндом на javascript, это необходимость переопределения по крайней мере некоторых моделей/сериализаторов как на бэкэнде, так и на фронтэнде.

Благодаря приложению DRF-schema-adapter export_app можно экспортировать эти определения в среду web-фреймворка либо на лету, либо в виде конкретных моделей. Для того, что бы это реализовать, сначала добавьте export_app в массив INSTALLED_APPS а так же путь к корню фронтэнда вашего web приложения. В зависимости от структуры какталогов проекта, так же может понадобится указание точного пути, где разделитель точка, к расположению роутера drf_auto_endpoint

## settings.py

INSTALLED_APPS = (
    ...
    'export_app',
)
EXPORTER_FRONT_APPLICATION_PATH = '../front/js/src'
EXPORTER_ROUTER_PATH = 'my_app.my_url_file.router'

После этого, для экспорта моделей необходимо запустить

./manage.py export <endpoint_base_url>

например, ./manage.py export sample/products

Для экспорта этих моделей на лету, нужно определеить имя приложения фронтэнда вместо его пути, а так же добавить новый URL в ваш urls.py

## settings.py

EXPORTER_FRONT_APPLICATION_NAME: 'my-app'
## urls.py
...
from export_app import urls as export_urls, settings as export_settings
...

urlpatterns = [
    ...
    url(r'^models/', include(export_urls, namespace=export_settings.URL_NAMESPACE)),
]

В зависимости от настроек бэкэнда и фронтенда так же может понадобится обновить еще несколько параметров. см. конфинурация export_app

Что бы узнать больше о настройках exporter_app и различных доступных адаптерах, см. раздел адаптеров export_app

Обсуждение закрыто.