📚

# 2.3 Django REST Framework(DRF)入門

に公開

前回の記事では Django の モデルベース開発 について紹介した。
今回はその続きとして、モデルを API に展開するための仕組み である Django REST Framework(DRF) を取り上げる。


DRF とは何か

Django は標準で HTML レンダリングが中心のフレームワーク。
一方で モダンな業務システムでは「API サーバ」としての役割 が求められることが多い。

DRF はそのためのライブラリで、以下の機能を提供する。

  • Serializer
  • ViewSet
  • Router

これらを組み合わせることで、モデルを基点にした API をすぐに作れる。
👉 特に AI と組み合わせると DRF の威力がさらに増す
Serializer や ViewSet の雛形は定型的なので、AI に依頼すれば即座に生成できる。


コード例:受注モデルを API 化する

モデル(前回と同じ)

# models.py
from django.db import models

class Order(models.Model):
    customer_name = models.CharField(max_length=100)
    total_amount = models.DecimalField(max_digits=10, decimal_places=2)
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return f"{self.customer_name} ({self.total_amount}円)"

Serializer の定義

AI プロンプト例:

Django REST Framework の Serializer を作ってください。
Order モデルを JSON に変換できるようにしてください。

AI 出力イメージ:

# serializers.py
from rest_framework import serializers
from .models import Order

class OrderSerializer(serializers.ModelSerializer):
    class Meta:
        model = Order
        fields = ["id", "customer_name", "total_amount", "created_at"]

ViewSet の定義

AI プロンプト例:

Order モデルを対象にした DRF の ViewSet を作ってください。

AI 出力イメージ:

# views.py
from rest_framework import viewsets
from .models import Order
from .serializers import OrderSerializer

class OrderViewSet(viewsets.ModelViewSet):
    queryset = Order.objects.all()
    serializer_class = OrderSerializer

Router に登録

AI プロンプト例:

OrderViewSet を DefaultRouter に登録する urls.py を作ってください。

AI 出力イメージ:

# urls.py
from rest_framework.routers import DefaultRouter
from .views import OrderViewSet

router = DefaultRouter()
router.register(r"orders", OrderViewSet)

urlpatterns = router.urls

これで以下の API が自動的に生成される。

  • GET /orders/
  • POST /orders/
  • GET /orders/{id}/
  • PUT /orders/{id}/
  • DELETE /orders/{id}/

実際のレスポンス例

一覧取得(GET /orders/

[
  {
    "id": 1,
    "customer_name": "株式会社テスト",
    "total_amount": "50000.00",
    "created_at": "2024-04-01T10:00:00Z"
  },
  {
    "id": 2,
    "customer_name": "サンプル商事",
    "total_amount": "120000.00",
    "created_at": "2024-04-02T15:30:00Z"
  }
]

DRF を使うメリット(+AI活用)

  • モデルベース開発と相性が良い
    モデルを定義して Serializer に渡すだけで API ができる

  • 開発スピードが速い
    CRUD API がほぼ自動で生成される。AI を使えばさらに雛形生成が加速する

  • 拡張性が高い
    フィルタリングや認可制御など、業務特有の要件は人間が設計して追加すればよい

  • 統一感のある API
    Router を使えば URL 設計が自然に揃う

  • AI との相性が良い

    • Serializer / ViewSet / Router は定型的 → AI に任せる
    • 認証・権限・業務ルールは業務依存 → 人間が責任を持つ
    • この分担で「スピード」と「正確性」を両立できる

まとめ

Django REST Framework を使えば、Django のモデルを そのまま API 化 できる。
さらに AI を活用すれば、定型的なコードは AI に任せ、業務特有のロジックは人間が設計するという分業が可能になる。

「雛形は AI、業務ルールは人間」 という役割分担が、実践的なアプローチとなる。

Discussion