# 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