OSS探訪GitHubでログイン

Djangoのserializer・authentication・viewsetでWeb APIを構築するREST framework

OSS規模スコア 321.6OSS健全度 100
スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
30,201
主要言語
Python
ライセンス
BSD-3-Clause
リポジトリ最終更新
2026/10/05
ページ内ナビ

概要

Django REST frameworkはDjango向けのWeb API toolkitです。serializer、authentication/permission、generic view、ViewSet、router、browsable APIを組み合わせ、Django ORMまたは非ORM data sourceからREST APIを構築できます。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

serializerでDjango modelや任意dataをAPI representationへ変換する

SerializerとModelSerializerで入力validationとresponse serializationを定義できます。Django ORMを使うmodel-backed APIだけでなく、通常のSerializerで非ORM data sourceも扱えます。

出典:[2]

ViewSet・router・authentication/permissionでAPI endpointを組み立てる

ViewSetとrouterからURL routingを生成でき、function-based viewやgeneric viewまで必要な抽象度を選択できます。Django authentication/permissionと連携し、browsable APIで開発中の操作確認も行えます。

出典:[2]

向いている用途

既存Django applicationへ型のあるREST API layerを追加したい場合に向く

Django model・auth・admin等を使っているapplicationで、serializerとpermissionを共通化しながらJSON APIを追加したいbackendに適します。

出典:[2]

導入前の確認

3.18.1はPython 3.10以上・Django 5.2/6.0/6.1を対象にする

DRF 3.18.1はPython 3.10以上、Django 5.2・6.0・6.1をofficial support対象とします。3.18.1ではvalidation error重複、OpenAPI integer format、unique constraint、非有限FloatField等が修正されているため、serializer error形式やschema generationをupgrade testに含めてください。

出典:[3][4]

参考にした公式資料

  1. [1]encode/django-rest-framework — GitHub repository(2026-10-06)
  2. [2]Django REST framework 3.18.1 — README(2026-10-06)
  3. [3]Django REST framework 3.18.1 — pyproject.toml(2026-10-06)
  4. [4]Django REST framework 3.18.1 release(2026-10-06)
  5. [5]Django REST framework BSD-3-Clause license(2026-10-06)
編集部からの補足

Django model・authを活かしてAPIを作る場合に強力ですが、ViewSet/Routerを使うかgeneric viewで明示するかをAPIの複雑さに合わせて選ぶと保守しやすくなります。

3ステップで試す

  1. 1

    DRF 3.18.1と対応Djangoを導入する

    DRFをversion固定し、公式support範囲のDjango 5.2〜6.1を導入します。

    python -m pip install "djangorestframework==3.18.1" "Django>=5.2,<6.2"
  2. 2

    最小Django projectとAPI endpointを作る

    rest_frameworkを有効化し、DB modelを使わないread-onlyな最小GET endpointを作ります。

    django-admin startproject example . && python - <<'PY' from pathlib import Path p = Path('example/settings.py') s = p.read_text() s = s.replace("INSTALLED_APPS = [", "INSTALLED_APPS = [\n 'rest_framework',") p.write_text(s) Path('example/urls.py').write_text('''from django.urls import path from rest_framework.decorators import api_view from rest_framework.response import Response @api_view(["GET"]) def hello(request): return Response({"hello": "drf"}) urlpatterns = [path("", hello)] ''') PY
  3. 3

    development serverでAPIを確認する

    Django development serverをlocalhostで起動し、JSON responseを確認します。本番では専用deployment構成を使用してください。

    python manage.py runserver 127.0.0.1:8000 # 別端末で: curl -fsS http://127.0.0.1:8000/
公式READMEで確認

成長

成長の推移 · 直近30日

30,201 Stars

推移データを蓄積中です。

Built with

カテゴリとタグ

GitHubデータ

GitHubのデータGitHubの詳細データを見る

GitHub Topics

  • api
  • django
  • python
  • rest
Stars
30,201
Forks
7,086
Watchers
604
Open Issues
49
Contributors
386
所有者種別
Organization
主要言語
Python
ライセンス
BSD-3-Clause
リポジトリ最終更新
2026/10/05

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?