サードパーティパッケージ
ソフトウェアエコシステムは、知識、コンテンツ、課題、専門知識、スキルの共有をさらに加速させるコミュニティを確立します。
— Jan Bosch氏。
サードパーティパッケージについて
サードパーティパッケージにより、開発者はDjango REST frameworkの機能を拡張するコードを共有し、追加のユースケースをサポートできます。
私たちは、Django REST Frameworkに直接機能を追加するのではなく、新しい動作をカプセル化するためのサードパーティパッケージの作成を**サポート**、**奨励**、そして**強く支持**します。
私たちは、**シンプル**で**適切に保守された**コアAPIを維持しながら、サードパーティパッケージの作成を可能な限り容易にすることを目指しています。 サードパーティパッケージを推進することで、パッケージの責任が作成者に残るようにします。 パッケージが十分に普及していることが証明されれば、いつでもコアREST frameworkへの組み込みを検討できます。
新しい機能のアイデアがある場合は、サードパーティパッケージとしてどのようにパッケージ化できるかを検討してください。 メーリングリストでいつでもアイデアについて話し合うことができます。
サードパーティパッケージの作成
バージョンの互換性
Django、Python、またはサードパーティライブラリのさまざまなバージョンでコードが確実に動作するようにするために、環境に応じてわずかに異なるコードを実行する必要がある場合があります。 このように分岐するコードは、`compat.py`モジュールに分離し、残りのコードベースが使用できる単一の共通インターフェースを提供する必要があります。
例として、Django REST frameworkのcompat.pyをご覧ください。
パッケージが利用可能になったら
パッケージが適切に文書化され、PyPIで利用可能になったら、それを役立つと思う他の人と共有することをお勧めします。
Django REST frameworkグリッドへの追加
Django PackagesのREST Frameworkグリッドにパッケージを追加することをお勧めします。
Django REST frameworkドキュメントへの追加
GitHubでプルリクエストまたは issue を作成してください。メインのREST frameworkドキュメントからリンクを追加します。 認証やパーミッションなど、最も適切なAPIガイドセクションの**サードパーティパッケージ**にパッケージを追加できます。 また、サードパーティパッケージセクションにパッケージをリンクすることもできます。
ディスカッショングループで発表する。
ディスカッショングループを通じて、パッケージについて他の人に知らせることもできます。
既存のサードパーティパッケージ
Django REST Frameworkには、開発者、パッケージ、リソースの成長するコミュニティがあります。
Django Packagesで、Django REST Framework周辺のパッケージとエコシステムを詳述したグリッドをご覧ください。
新しいコンテンツを送信するには、issueを開くか、プルリクエストを作成してください。
認証
- djangorestframework-digestauth - Digestアクセス認証サポートを提供します。
- django-oauth-toolkit - OAuth 2.0サポートを提供します。
- djangorestframework-simplejwt - JSON Webトークン認証サポートを提供します。
- hawkrest - Hawk HTTP認証を提供します。
- djangorestframework-httpsignature - 使いやすいHTTP署名認証メカニズムを提供します。
- djoser - 登録、ログイン、ログアウト、パスワードリセット、アカウントアクティベーションなどの基本的なアクションを処理するための一連のビューを提供します。
- dj-rest-auth - 登録、認証(ソーシャルメディア認証を含む)、パスワードリセット、ユーザー詳細の取得と更新など、REST APIエンドポイントのセットを提供します。
- drf-oidc-auth - DRFのOpenID Connectトークン認証を実装します。
- drfpasswordless - メールと携帯電話番号を介した(Medium、Square Cashにインスパイアされた)パスワードレスログインとサインアップを追加します。
- django-rest-authemail - メールアドレスを使用したユーザーのサインアップと認証のためのRESTful APIを提供します。
パーミッション
- drf-any-permissions - 代替のパーミッション処理を提供します。
- djangorestframework-composed-permissions - 複雑なパーミッションを定義する簡単な方法を提供します。
- rest_condition - シンプルで便利な方法で複雑なパーミッションを構築するための別の拡張機能。
- dry-rest-permissions - 個々のAPIアクションのパーミッションを定義する簡単な方法を提供します。
- drf-access-policy - AWSのIAMポリシーに触発された宣言型で柔軟なパーミッション。
- drf-psq - パーミッションベースのルールに依存する、アクションベースの**permission_classes**、**serializer_class**、および**queryset**のサポートを提供する拡張機能。
シリアライザー
- django-rest-framework-mongoengine - Django REST frameworkのストレージレイヤーとしてMongoDBの使用をサポートするシリアライザークラス。
- djangorestframework-gis - 地理アドオン
- djangorestframework-hstore - django-hstore DictionaryFieldモデルフィールドとそのスキーママード機能をサポートするシリアライザークラス。
- djangorestframework-jsonapi - jsonapi.orgの仕様に準拠したAPIの構築に役立つパーサー、レンダラー、シリアライザー、その他のツールを提供します。
- html-json-forms - (非アクティブな)仕様に従ってHTML JSONフォームの送信を処理するためのアルゴリズムとシリアライザーを提供します。
- django-rest-framework-serializer-extensions - フィールドのブラックリスト/ホワイトリスト化、およびビュー/リクエストごとに子シリアライザーを条件付きで拡張することを可能にします。
- djangorestframework-queryfields - クライアントがAPIレスポンスで送信されるフィールドを制御できるようにするシリアライザーmixin。
- drf-flex-fields - URLパラメータを介して動的なフィールド拡張とスパースフィールドセットを提供するシリアライザー。
- drf-action-serializer - 複数のシリアライザーを作成する必要がないように、ViewSetで使用するアクションごとのフィールド設定を提供するシリアライザー。
- djangorestframework-dataclasses - 組み込みのModelSerializerがモデルに対して行うように、Pythonデータクラスの自動フィールド生成を提供するシリアライザー。
- django-restql - REST APIをGraphQLのようなAPIに変えます(クライアントはレスポンスで送信されるフィールドを制御でき、GraphQLのような構文を使用し、フラットとネストの両方のフィールドの読み取りと書き込みをサポートします)。
- graphwrap - わずか2行のコードでREST APIを完全に準拠したGraphQL APIに変換します。 Graphene-Djangoを活用して、実行時にAPIの各ビューのGraphQL ObjectTypeを動的に構築します。
シリアライザーフィールド
- drf-compound-fields - シンプルな値のリストなど、「複合」シリアライザーフィールドを提供します。
- drf-extra-fields - 追加のシリアライザーフィールドを提供します。
- django-versatileimagefield - Djangoの標準`ImageField`のドロップイン置換を提供し、単一のフィールドから複数のサイズ/レンディションで画像を簡単に提供できるようにします。 DRF固有の実装ドキュメントについては、ここをクリックしてください。
ビュー
- django-rest-multiple-models - 単一のAPIリクエストを介して複数のシリアル化されたモデルやクエリセットを送信するための汎用ビュー(およびmixin)を提供します。
- drf-typed-views - Pythonの型アノテーションを使用してリクエストパラメータを検証/逆シリアル化します。 API Star、Hug、FastAPIに触発されています。
- rest-framework-actions - ViewSetの各アクションを制御します。 アクション、メソッドごとのシリアライザー。
ルータ
- drf-nested-routers - ネストされたリソースを操作するためのルーターと関係フィールドを提供します。
- wq.db.rest - 適切なデフォルトのURLとビューセットを備えた、管理スタイルのモデル登録APIを提供します。
パーサー
- djangorestframework-msgpack - MessagePackレンダラーとパーサーのサポートを提供します。
- djangorestframework-jsonapi - jsonapi.orgの仕様に準拠したAPIの構築に役立つパーサー、レンダラー、シリアライザー、その他のツールを提供します。
- djangorestframework-camel-case - キャメルケースJSONレンダラーとパーサーを提供します。
- nested-multipart-parser - HTTPマルチパートリクエストのネストされたパーサーを提供します
レンダラー
- djangorestframework-csv - CSVレンダラーのサポートを提供します。
- djangorestframework-jsonapi - jsonapi.orgの仕様に準拠したAPIの構築に役立つパーサー、レンダラー、シリアライザー、その他のツールを提供します。
- drf_ujson2 - UJSONパッケージを使用してJSONレンダリングを実装します。
- rest-pandas - Excel、CSV、SVG形式を含む、Pandas DataFrameを利用したレンダラーです。
- djangorestframework-rapidjson - パーサーとレンダラーによるrapidjsonのサポートを提供します。
フィルタリング
- djangorestframework-chain - リレーションとルックアップフィルターの任意の連鎖を可能にします。
- django-url-filter - 分かりやすいURLを介して安全にデータをフィルタリングする方法を提供します。DRFに限定されない汎用ライブラリですが、DRFとの簡単な統合を提供します。
- drf-url-filter は、クリーンでシンプル、かつ設定可能な方法で、DRFの
ModelViewSet
のQueryset
にフィルターを適用するためのシンプルなDjangoアプリです。また、受信クエリパラメータとその値の検証もサポートしています。 - django-rest-framework-guardian2 - 以前DRFにあった
DjangoObjectPermissionsFilter
を含む、django-guardianとの統合を提供します。
その他
- drf-sendables - Django REST Frameworkのユーザーメッセージ
- cookiecutter-django-rest - セットアップと設定を自動化し、REST APIの作成に集中できるcookiecutterテンプレートです。
- djangorestrelationalhyperlink - ハイパーリンクを介してリレーションを変更できるハイパーリンクシリアライザーですが、それ以外はハイパーリンクモデルシリアライザーと同様です。
- django-rest-framework-proxy - 受信リクエストを別のAPIサーバーにリダイレクトするプロキシです。
- gaiarestframework - django-rest-frameworkのためのユーティリティ
- drf-extensions - カスタム拡張機能のコレクション
- ember-django-adapter - Ember.jsで作業するためのアダプター
- django-versatileimagefield - Djangoの標準`ImageField`のドロップイン置換を提供し、単一のフィールドから複数のサイズ/レンディションで画像を簡単に提供できるようにします。 DRF固有の実装ドキュメントについては、ここをクリックしてください。
- drf-tracking - DRF APIビューへのリクエストを追跡するためのユーティリティ
- drf_tweaks - ワンステップ検証(など)を備えたシリアライザー、カウントなしのページネーション、その他の調整
- django-rest-framework-braces - Django Rest Frameworkで作業するためのユーティリティのコレクション。最も注目すべきは、DRFシリアライザーとDjangoフォーム間のアダプターであるFormSerializerとSerializerFormです。
- drf-haystack - Django Rest FrameworkのためのHaystack検索
- django-rest-framework-version-transforms - DRFリソース表現のバージョン管理にデルタ変換の使用を可能にします。
- django-rest-messaging、django-rest-messaging-centrifugo、django-rest-messaging-js - DRMを使用したリアルタイムのプラグイン可能なメッセージングサービス
- djangorest-alchemy - REST frameworkのSQLAlchemyサポート
- djangorestframework-datatables - Django REST frameworkとDatatablesのシームレスな統合
- django-rest-framework-condition - Django REST frameworkのHTTPキャッシュヘッダー(ETagとLast-modified)を管理するためのデコレーター
- django-rest-witchcraft - SQLAlchemyモデルシリアライザー/ビューセットやその他の便利な機能を備えた、SQLAlchemyとDRFの統合を提供します
- djangorestframework-mvt - PostgresデータをMap Boxベクタータイルとして提供するビューを作成するための拡張機能
- drf-viewset-profiler - viewsetのすべてのメソッドを1行ずつプロファイルするためのライブラリ
- djangorestframework-features - 名前付き機能に基づく高度なスキーマ生成など
- django-elasticsearch-dsl-drf - Elasticsearch DSLとDjango REST frameworkを統合します。パッケージは、ビュー、シリアライザー、フィルターバックエンド、ページネーション、その他の便利なアドオンを提供します。
- django-api-client - CBVとFBVでDjangoのネイティブモデルを操作しているかのようにエンドポイントレスポンスをグループ化するDRFクライアント。
- fast-drf - API開発をより迅速かつ容易にするためのモデルベースのライブラリ。
- django-requestlogs - REST frameworkの監査ログのためのミドルウェアとその他のヘルパーを提供します。
- drf-standardized-errors - すべてのAPIエンドポイントのエラー応答を標準化するためのDRF例外ハンドラー。
- drf-api-action - DRFの機能をライブラリ関数としても使用します
カスタマイズ
- drf-redesign - Bootstrap 5を使用してブラウズ可能なAPIに新しい外観を与えるプロジェクト。
- drf-material - マテリアルデザインを使用してブラウズ可能なAPIに洗練されたエレガントな外観を与えるプロジェクト。