導入
おめでとうございます。URL・ビュー・テンプレート・フォーム・モデルまで、Django で Web サイトを作る土台が身につきました。最後に、次のステップとして知っておくと世界が広がる2つのトピックを紹介します。
説明
① クラスベースビュー(CBV)
これまで書いてきたのは「関数」のビュー(FBV: Function-Based View)でした。Django には、よくあるパターン(一覧・詳細・作成・更新・削除)をクラスで短く書く仕組みもあります。
# 関数ビュー(これまでのやり方)
def post_list(request):
posts = Post.objects.all()
return render(request, "blog/post_list.html", {"posts": posts})
# クラスベースビュー(同じことを数行で)
from django.views.generic import ListView, DetailView
class PostList(ListView):
model = Post # これだけで一覧ページが完成
# テンプレート名・変数名も規約で自動決定される
class PostDetail(DetailView):
model = Post # /posts/<pk>/ の詳細ページ
ListView / DetailView / CreateView / UpdateView / DeleteView といった「汎用ビュー」を使うと、定型的な CRUD 画面をほとんどコードなしで作れます。仕組みを理解するには関数ビューが分かりやすいので、まず本コースの関数ビューで基礎を固め、慣れてきたら CBV で短く書く、という順番がおすすめです。
② Django REST Framework(DRF)― APIを作る
スマホアプリや React・Vue などのフロントエンドと通信するには、HTML ではなく JSON を返す API が必要です。第2章で JsonResponse を使いましたが、本格的な API には Django REST Framework(DRF) という定番ライブラリを使います。
# pip install djangorestframework
from rest_framework import serializers, viewsets
# モデル → JSON の変換ルール
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = ["id", "title", "body"]
# 一覧・詳細・作成・更新・削除のAPIを一気に用意
class PostViewSet(viewsets.ModelViewSet):
queryset = Post.objects.all()
serializer_class = PostSerializer
これだけで GET /api/posts/(一覧)、POST /api/posts/(作成)、GET /api/posts/1/(詳細)……といった REST API が完成します。認証・ページネーション・入力検証も DRF が面倒を見てくれます。
学びの地図:
flowchart TD B["本コース<br/>URL・ビュー・テンプレート・フォーム・モデル"] --> C["クラスベースビュー<br/>CRUDを短く書く"] B --> D["Django REST Framework<br/>JSON API を作る"] B --> E["認証の応用<br/>ソーシャルログイン・権限"] C --> F["実戦:<br/>自分のアプリを作って公開"] D --> F E --> F
次におすすめの一歩は、自分の作りたいものを1つ、小さく作って公開してみることです。ToDo アプリ、メモ帳、日記、ブックマーク集 ―― 何でも構いません。本コースで学んだ部品の組み合わせで、驚くほど多くのものが作れます。詰まったら、公式ドキュメント(Django Documentation)と、公式チュートリアル「はじめての Django アプリ作成」が最良の相棒です。
Web 開発の旅を楽しんでください!