Django REST Framework

Django REST Framework

Django REST frameworkは、Web APIを構築するための強力で柔軟なツールキットです。

REST frameworkを使用する理由


資金調達

REST frameworkは*共同出資プロジェクト*です。REST frameworkを商用利用する場合は、**有料プランにサインアップ**して、継続的な開発に投資することを強くお勧めします。

皆様のご登録が、REST frameworkの長期的な財政的持続可能性に繋がります。

すべての素晴らしいスポンサー、そして特にプレミアムバッカーであるSentryStreamSpacinovRetoolbit.ioPostHogCryptAPIFEZTOSvixに感謝いたします。


要件

REST frameworkには以下が必要です

  • Python (3.6, 3.7, 3.8, 3.9, 3.10, 3.11)
  • Django (3.0, 3.1, 3.2, 4.0, 4.1, 4.2, 5.0)

私たちは、各PythonとDjangoシリーズの**最新の パッチリリースを強く推奨**し、公式にサポートしています。

以下のパッケージはオプションです

  • PyYAMLuritemplate (5.1+, 3.0.0+) - スキーマ生成サポート。
  • Markdown (3.0.0+) - ブラウザブルAPIのMarkdownサポート。
  • Pygments (2.4.0+) - Markdown処理にシンタックスハイライトを追加。
  • django-filter (1.0.1+) - フィルタリングサポート。
  • django-guardian (1.1.1+) - オブジェクトレベルのパーミッションサポート。

インストール

pipを使用して、必要なオプションパッケージを含めてインストールします...

pip install djangorestframework
pip install markdown       # Markdown support for the browsable API.
pip install django-filter  # Filtering support

...またはgithubからプロジェクトをクローンします。

git clone https://github.com/encode/django-rest-framework

INSTALLED_APPS設定に'rest_framework'を追加します。

INSTALLED_APPS = [
    ...
    'rest_framework',
]

ブラウザブルAPIを使用する場合は、REST frameworkのログインおよびログアウトビューも追加する必要があります。ルートのurls.pyファイルに以下を追加します。

urlpatterns = [
    ...
    path('api-auth/', include('rest_framework.urls'))
]

URLパスは自由に設定できます。

REST frameworkを使用してシンプルなモデルバックエンドAPIを構築する簡単な例を見てみましょう。

プロジェクトのユーザー情報にアクセスするための読み書きAPIを作成します。

REST framework APIのグローバル設定はすべて、REST_FRAMEWORKという名前の単一の構成辞書に保存されます。最初に、settings.pyモジュールに以下を追加します

REST_FRAMEWORK = {
    # Use Django's standard `django.contrib.auth` permissions,
    # or allow read-only access for unauthenticated users.
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'
    ]
}

INSTALLED_APPSrest_frameworkを追加したことも忘れないでください。

これでAPIを作成する準備が整いました。プロジェクトのルートurls.pyモジュールは次のとおりです

from django.urls import path, include
from django.contrib.auth.models import User
from rest_framework import routers, serializers, viewsets

# Serializers define the API representation.
class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ['url', 'username', 'email', 'is_staff']

# ViewSets define the view behavior.
class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer

# Routers provide an easy way of automatically determining the URL conf.
router = routers.DefaultRouter()
router.register(r'users', UserViewSet)

# Wire up our API using automatic URL routing.
# Additionally, we include login URLs for the browsable API.
urlpatterns = [
    path('', include(router.urls)),
    path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]

これで、ブラウザでhttp://127.0.0.1:8000/でAPIを開き、新しい「users」APIを表示できます。右上隅のログインコントロールを使用すると、システムからユーザーを追加、作成、削除することもできます。

クイックスタート

すぐに始めたいですか? クイックスタートガイド は、REST frameworkを使用してAPIをすぐに起動して実行するための最速の方法です。

開発

リポジトリのクローン、テストスイートの実行、REST Frameworkへの変更の貢献方法については、貢献ガイドラインを参照してください。

サポート

サポートについては、REST frameworkディスカッショングループを参照するか、irc.libera.chat#restframeworkチャネルを試すか、Stack Overflowで質問を投稿してください。'django-rest-framework'タグを含めるようにしてください。

優先サポートについては、プロフェッショナルまたはプレミアムスポンサーシッププランにサインアップしてください。

セキュリティ

セキュリティ問題は、Djangoセキュリティチームの監督下で処理されます。

セキュリティの問題は、security@djangoproject.comにメールで報告してください。.

プロジェクトメンテナは、公開前に必要に応じて、問題の解決に協力します。

ライセンス

Copyright © 2011-present, Encode OSS Ltd. All rights reserved.

以下の条件を満たす場合、変更の有無にかかわらず、ソースおよびバイナリ形式での再配布および使用が許可されます。

  • ソースコードの再配布には、上記の著作権表示、この条件リスト、および以下の免責事項を含める必要があります。

  • バイナリ形式での再配布には、上記の著作権表示、この条件リスト、および以下の免責事項を、配布に付属のドキュメントまたはその他の資料に複製する必要があります。

  • 著作権所有者またはその貢献者の名前を、事前の書面による許可なしに、このソフトウェアから派生した製品の推奨または宣伝に使用することはできません。

このソフトウェアは、著作権所有者および貢献者によって「現状のまま」提供され、商品性および特定の目的への適合性に関する黙示的保証を含むがこれらに限定されない、明示的または黙示的な保証は一切ありません。著作権所有者または貢献者は、いかなる場合でも、直接的、間接的、偶発的、特別、懲罰的、または結果的損害(代替の商品またはサービスの調達、使用、データ、または利益の損失、または事業の中断を含むがこれらに限定されない)について、原因の如何を問わず、責任の理論の如何を問わず、契約、厳格責任、または不法行為(過失を含む)のいずれかにおいても、このソフトウェアの使用から生じた場合、たとえそのような損害の可能性が知らされていたとしても、責任を負いません。