Сторонние пакеты

Экосистемы программного обеспечения […] создают сообщество, которое еще больше ускоряет обмен знаниями, контентом, проблемами, опытом и навыками.

Jan Bosch.

О пакетах сторонних производителей

Сторонние пакеты позволяют разработчикам делиться кодом, расширяющим функциональность REST-фреймворка Django, для поддержки дополнительных сценариев использования.

Мы поддерживаем, поощряем и сильно поддерживаем создание сторонних пакетов для инкапсуляции нового поведения, а не добавления дополнительной функциональности непосредственно в Django REST Framework.

Мы стремимся максимально упростить создание сторонних пакетов, сохраняя при этом простой и хорошо поддерживаемый основной API. Продвигая сторонние пакеты, мы гарантируем, что ответственность за пакет остается за его автором. Если пакет окажется достаточно популярным, он всегда может быть рассмотрен для включения в основной REST-фреймворк.

Если у вас есть идея для новой функции, пожалуйста, подумайте о том, как ее можно упаковать в виде стороннего пакета. Мы всегда рады обсудить идеи на Mailing List.

Создание пакета третьей стороны

Совместимость версий

Иногда для того, чтобы ваш код работал на различных версиях Django, Python или сторонних библиотек, вам нужно будет запускать немного разный код в зависимости от окружения. Любой код, который разветвляется таким образом, должен быть изолирован в модуль compat.py, и должен предоставлять единый общий интерфейс, который может использовать остальная часть кодовой базы.

Посмотрите на примере фреймворка Django REST compat.py.

Как только ваш пакет будет доступен

Как только ваш пакет будет прилично документирован и доступен на PyPI, вы, возможно, захотите поделиться им с другими людьми, которые могут найти его полезным.

Добавление в сетку фреймворка Django REST

Мы предлагаем добавить ваш пакет в сетку REST Framework на Django Packages.

Добавление к документации по фреймворку Django REST

Создайте Pull Request или Issue на GitHub, и мы добавим ссылку на него из основной документации по REST-фреймворку. Вы можете добавить свой пакет в раздел Third party packages раздела API Guide, который лучше всего подходит, например Authentication или Permissions. Вы также можете разместить ссылку на свой пакет в разделе Third Party Packages.

Объявите об этом в дискуссионной группе.

Вы также можете сообщить другим о своем пакете через discussion group.

Существующие пакеты сторонних производителей

Django REST Framework имеет растущее сообщество разработчиков, пакетов и ресурсов.

Посмотрите сетку с подробным описанием всех пакетов и экосистемы вокруг Django REST Framework по адресу Django Packages.

Чтобы отправить новый контент, open an issue или create a pull request.

Аутентификация

  • djangorestframework-digestauth - Обеспечивает поддержку аутентификации Digest Access Authentication.

  • django-oauth-toolkit - Обеспечивает поддержку OAuth 2.0.

  • djangorestframework-simplejwt - Обеспечивает поддержку аутентификации JSON Web Token.

  • hawkrest - Обеспечивает авторизацию Hawk HTTP.

  • djangorestframework-httpsignature - Предоставляет простой в использовании механизм аутентификации подписи HTTP.

  • djoser - Предоставляет набор представлений для обработки основных действий, таких как регистрация, вход в систему, выход из системы, сброс пароля и активация учетной записи.

  • django-rest-auth - Предоставляет набор конечных точек REST API для регистрации, аутентификации (включая аутентификацию в социальных сетях), сброса пароля, получения и обновления данных пользователя и т.д.

  • drf-oidc-auth - Реализует аутентификацию токена OpenID Connect для DRF.

  • drfpasswordless - Добавляет (Medium, Square Cash inspired) беспарольные логины и регистрации через электронную почту и мобильные номера.

  • django-rest-authemail - Предоставляет RESTful API для регистрации и аутентификации пользователей с использованием адресов электронной почты.

Разрешения

  • drf-any-permissions - Обеспечивает альтернативную обработку разрешений.

  • djangorestframework-composed-permissions - Обеспечивает простой способ определения сложных разрешений.

  • rest_condition - Еще одно расширение для построения сложных разрешений простым и удобным способом.

  • dry-rest-permissions - Предоставляет простой способ определения разрешений для отдельных действий api.

  • drf-access-policy - Декларативные и гибкие разрешения, вдохновленные IAM-политиками AWS.

  • drf-psq - Расширение, поддерживающее зависимость классов permission_classes , serializer_class , и queryset от правил, основанных на разрешениях.

Сериализаторы

  • django-rest-framework-mongoengine - класс Serializer, поддерживающий использование MongoDB в качестве уровня хранения для REST-фреймворка Django.

  • djangorestframework-gis - Географические дополнения

  • djangorestframework-hstore - класс сериализатора для поддержки поля модели django-hstore DictionaryField и его функции schema-mode.

  • djangorestframework-jsonapi - Предоставляет парсер, рендерер, сериализаторы и другие инструменты для создания API, соответствующего спецификации jsonapi.org.

  • html-json-forms - Предоставляет алгоритм и сериализатор для обработки HTML JSON форм в соответствии с (неактивной) спецификацией.

  • django-rest-framework-serializer-extensions - Включает черный/белый список полей, а также условное расширение дочерних сериализаторов на основе каждого представления/запроса.

  • djangorestframework-queryfields - Миксин Serializer, позволяющий клиентам контролировать, какие поля будут отправлены в ответе API.

  • drf-flex-fields - Сериализатор, обеспечивающий динамическое расширение полей и разреженные наборы полей через параметры URL.

  • drf-action-serializer - Сериализатор, предоставляющий конфигурацию полей для каждого действия, для использования с ViewSets, чтобы избежать необходимости писать несколько сериализаторов.

  • djangorestframework-dataclasses - Сериализатор, обеспечивающий автоматическую генерацию полей для классов данных Python, как это делает встроенный ModelSerializer для моделей.

  • django-restql - Превратите ваш REST API в GraphQL-подобный API (позволяет клиентам контролировать, какие поля будут отправлены в ответе, использует GraphQL-подобный синтаксис, поддерживает чтение и запись как плоских, так и вложенных полей).

  • graphwrap - Превратите ваш REST API в полностью совместимый GraphQL API всего двумя строками кода. Использует Graphene-Django для динамического создания во время выполнения GraphQL ObjectType для каждого представления в вашем API.

Поля сериализатора

  • drf-compound-fields - Предоставляет «составные» поля сериализатора, такие как списки простых значений.

  • drf-extra-fields - Предоставляет дополнительные поля сериализатора.

  • django-versatileimagefield - Предоставляет замену для стокового ImageField в Django, которая позволяет легко предоставлять изображения нескольких размеров/ранжировок из одного поля. Для документации по реализации DRF-специфики, click here.

Просмотры

  • django-rest-multiple-models - Предоставляет общее представление (и миксин) для отправки нескольких сериализованных моделей и/или наборов запросов через один запрос API.

  • drf-typed-views - Использование аннотаций типов Python для валидации/десериализации параметров запроса. Вдохновлен API Star, Hug и FastAPI.

  • rest-framework-actions - Обеспечивает контроль над каждым действием в ViewSets. Сериализаторы на действие, метод.

Маршрутизаторы

  • drf-nested-routers - Предоставляет маршрутизаторы и поля отношений для работы с вложенными ресурсами.

  • wq.db.rest - Предоставляет API регистрации моделей в стиле администратора с разумными URL по умолчанию и наборами представлений.

Парсеры

  • djangorestframework-msgpack - Обеспечивает поддержку рендеринга и парсера MessagePack.

  • djangorestframework-jsonapi - Предоставляет парсер, рендерер, сериализаторы и другие инструменты для создания API, соответствующего спецификации jsonapi.org.

  • djangorestframework-camel-case - Предоставляет рендеринг и парсер JSON в верблюжьем регистре.

Рендереры

  • djangorestframework-csv - Обеспечивает поддержку рендеринга CSV.

  • djangorestframework-jsonapi - Предоставляет парсер, рендерер, сериализаторы и другие инструменты для создания API, соответствующего спецификации jsonapi.org.

  • drf_ujson2 - Реализует рендеринг JSON с использованием пакета UJSON.

  • rest-pandas - Pandas DataFrame-powered renderers including Excel, CSV, and SVG formats.

  • djangorestframework-rapidjson - Обеспечивает поддержку rapidjson с парсером и рендерером.

Фильтрация

  • djangorestframework-chain - Позволяет произвольно выстраивать цепочки как отношений, так и фильтров поиска.

  • django-url-filter - Позволяет безопасно фильтровать данные через удобные для человека URL. Это универсальная библиотека, которая не привязана к DRF, но обеспечивает легкую интеграцию с DRF.

  • drf-url-filter - это простое Django приложение для применения фильтров к drf ModelViewSet „s Queryset чистым, простым и настраиваемым способом. Оно также поддерживает валидацию входящих параметров запроса и их значений.

  • django-rest-framework-guardian - Обеспечивает интеграцию с django-guardian, включая DjangoObjectPermissionsFilter, который ранее находился в DRF.

Misc

  • cookiecutter-django-rest - Шаблон cookiecutter, который берет на себя заботу об установке и конфигурации, чтобы вы могли сосредоточиться на создании своих REST apis.

  • djangorestrelationalhyperlink - Сериализатор с гиперссылками, который может быть использован для изменения отношений через гиперссылки, но в остальном подобен сериализатору модели гиперссылок.

  • django-rest-framework-proxy - Прокси для перенаправления входящего запроса на другой сервер API.

  • gaiarestframework - Утилиты для django-rest-framework

  • drf-extensions - Коллекция пользовательских расширений

  • ember-django-adapter - Адаптер для работы с Ember.js

  • django-versatileimagefield - Предоставляет замену для стокового ImageField в Django, которая позволяет легко предоставлять изображения нескольких размеров/ранжировок из одного поля. Для документации по реализации DRF-специфики, click here.

  • drf-tracking - Утилиты для отслеживания запросов к представлениям DRF API.

  • drf_tweaks - Сериализаторы с одношаговой валидацией (и многое другое), пагинация без подсчетов и другие доработки.

  • django-rest-framework-braces - Коллекция утилит для работы с Django Rest Framework. Наиболее заметными из них являются FormSerializer и :doc:`SerializerForm <https://django-rest-framework-braces.readthedocs.io/en/latest/overview.html#serializerform>`** , которые представляют собой адаптеры между сериализаторами DRF и формами Django.

  • drf-haystack - Поиск по стогу сена для Django Rest Framework

  • django-rest-framework-version-transforms - Разрешает использование дельта-преобразований для версионности представлений ресурсов DRF.

  • django-rest-messaging и django-rest-messaging-js - подключаемая служба обмена сообщениями в реальном времени с использованием DRM.

  • djangorest-alchemy - Поддержка SQLAlchemy для фреймворка REST.

  • djangorestframework-datatables - Бесшовная интеграция между REST-фреймворком Django и Datatables.

  • django-rest-framework-condition - Декораторы для управления заголовками кэша HTTP для фреймворка Django REST (ETag и Last-modified).

  • django-rest-witchcraft - Обеспечивает интеграцию DRF с SQLAlchemy с сериализаторами/наборами представлений моделей SQLAlchemy и кучей других полезностей

  • djangorestframework-mvt - Расширение для создания представлений, которые предоставляют данные Postgres в виде векторных плиток Map Box.

  • drf-viewset-profiler - Lib для профилирования всех методов из набора представлений построчно.

  • djangorestframework-features - Расширенная генерация схем и многое другое на основе именованных характеристик.

  • django-elasticsearch-dsl-drf - Интеграция Elasticsearch DSL с Django REST framework. Пакет предоставляет представления, сериализаторы, бэкенды фильтров, пагинацию и другие удобные дополнения.

  • django-api-client - DRF клиент, который группирует ответ конечной точки, для использования в CBV и FBV, как если бы вы работали с нативными моделями Django….

  • fast-drf - Библиотека на основе моделей для ускорения и упрощения разработки API.

Вернуться на верх