Django Framework について
Djangoを学ぶ人やPythonのWeb開発者向けの学習ガイドです。プロジェクト構成、ORM、認証・認可、Django REST Frameworkを扱い、ブログ、EC API、タスク管理アプリの演習を用意しています。
主な機能
- 01プロジェクト構成とルーティングの解説
- 02ORM、モデル、マイグレーション
- 03認証・認可と権限管理
- 04Django REST Frameworkの解説
- 053つの実践プロジェクト
活用シーン
- 01ユーザー認証付きブログの構築
- 02EC向けREST APIの開発
- 03共同タスク管理アプリの作成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ pluginagentmarketplace/ custom-plugin-python --skill django-frameworkインストール後、Claude Code で/django-frameworkを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/config.yamlreferences/GUIDE.mdscripts/helper.py詳細
Django Framework
概要
迅速な開発とクリーンで実用的な設計を促進する、高水準の Python Web フレームワークである Django を習得します。機能が豊富な Django のアプローチを活用して、安全でスケーラブルな Web アプリケーションを構築する方法を学びます。
学習目標
- Django の MVC パターンを使用してフルスタックの Web アプリケーションを構築する
- Django ORM でデータベースモデルを設計・実装する
- ユーザー認証と認可を実装する
- Django REST Framework で RESTful API を作成する
- Django アプリケーションを本番環境にデプロイする
主なトピック
1. Django の基本とプロジェクト構成
- Django プロジェクトのセットアップと設定
- MVT(Model-View-Template)パターンの理解
- URL ルーティングとビュー
- Django の設定と環境変数
- 静的ファイルとメディアの取り扱い
コード例:
# myapp/views.py
from django.shortcuts import render
from django.http import JsonResponse
from .models import Product
def product_list(request):
products = Product.objects.all()
return render(request, 'products/list.html', {'products': products})
def product_api(request):
products = Product.objects.values('id', 'name', 'price')
return JsonResponse(list(products), safe=False)
2. Django ORM とデータベースモデル
- モデルの定義とフィールドの種類
- リレーションシップ(ForeignKey、ManyToMany、OneToOne)
- QuerySet とデータベースクエリ
- マイグレーションとスキーマ管理
- データベースの最適化(select_related、prefetch_related)
コード例:
# models.py
from django.db import models
from django.contrib.auth.models import User
class Category(models.Model):
name = models.CharField(max_length=100)
slug = models.SlugField(unique=True)
created_at = models.DateTimeField(auto_now_add=True)
class Meta:
verbose_name_plural = "Categories"
def __str__(self):
return self.name
class Product(models.Model):
name = models.CharField(max_length=200)
description = models.TextField()
price = models.DecimalField(max_digits=10, decimal_places=2)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
created_by = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
is_active = models.BooleanField(default=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.name
# Efficient querying
products = Product.objects.select_related('category', 'created_by').filter(is_active=True)
3. 認証と認可
- ユーザー登録とログイン
- パスワード管理
- セッション管理
- 権限とグループ
- カスタムユーザーモデル
- ソーシャル認証
コード例:
# views.py
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.decorators import login_required, permission_required
from django.shortcuts import redirect, render
def login_view(request):
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return redirect('dashboard')
return render(request, 'login.html')
@login_required
def dashboard(request):
return render(request, 'dashboard.html')
@permission_required('products.add_product')
def add_product(request):
# Only users with 'add_product' permission can access
return render(request, 'products/add.html')
4. Django REST Framework
- シリアライザーとバリデーション
- ViewSet とルーター
- 認証(JWT、トークン)
- 権限とスロットリング
- ページネーションとフィルタリング
コード例:
# serializers.py
from rest_framework import serializers
from .models import Product, Category
class CategorySerializer(serializers.ModelSerializer):
class Meta:
model = Category
fields = ['id', 'name', 'slug']
class ProductSerializer(serializers.ModelSerializer):
category = CategorySerializer(read_only=True)
category_id = serializers.IntegerField(write_only=True)
class Meta:
model = Product
fields = ['id', 'name', 'description', 'price', 'category', 'category_id', 'created_at']
# views.py
from rest_framework import viewsets
from rest_framework.permissions import IsAuthenticatedOrReadOnly
class ProductViewSet(viewsets.ModelViewSet):
queryset = Product.objects.all()
serializer_class = ProductSerializer
permission_classes = [IsAuthenticatedOrReadOnly]
def get_queryset(self):
queryset = super().get_queryset()
category = self.request.query_params.get('category')
if category:
queryset = queryset.filter(category__slug=category)
return queryset
実践演習
プロジェクト 1:ブログアプリケーション
ユーザー認証機能を備えた、本格的なブログを構築します。
要件:
- ユーザー登録とログイン
- 投稿の作成、編集、削除
- コメント機能
- カテゴリーとタグ
- 検索機能
- 管理インターフェース
主なスキル: Django モデル、ビュー、フォーム、認証
プロジェクト 2:E コマース API
E コマースプラットフォーム向けの RESTful API を作成します。
要件:
- カテゴリーを備えた商品カタログ
- ショッピングカート管理
- 注文処理
- JWT を使用したユーザー認証
- API ドキュメント
- レート制限
主なスキル: Django REST Framework、シリアライザー、認証
プロジェクト 3:タスク管理システム
共同作業に対応したタスク管理アプリケーションを構築します。
要件:
- ユーザー登録とチーム
- タスクの作成と割り当て
- タスクのステータス追跡
- ファイル添付
- リアルタイム通知
- 権限に基づくアクセス
主なスキル: 複雑なモデル、権限、ファイルの取り扱い
評価基準
- 適切な構成で Django プロジェクトをセットアップする
- 正規化されたデータベーススキーマを設計する
- CRUD 操作を効率的に実装する
- 認証によってアプリケーションを保護する
- ベストプラクティスに沿った RESTful API を構築する
- Django のテスト(単体テストと統合テスト)を作成する
- 本番環境にデプロイする
リソース
公式ドキュメント
- Django ドキュメント - 公式ドキュメント
- Django REST Framework - DRF ドキュメント
- Django Girls チュートリアル - 初心者向け
学習プラットフォーム
- Django for Beginners - 書籍とチュートリアル
- Two Scoops of Django - ベストプラクティス
- TestDriven.io - TDD を使った Django
ツール
- Django Debug Toolbar - デバッグ
- django-extensions - 便利なユーティリティ
- Celery - 非同期タスク
- PostgreSQL - 推奨データベース
次のステップ
Django を習得したら、以下を学びましょう。
- FastAPI - モダンで高速な Web フレームワーク
- Celery - 非同期タスクキュー
- Docker - デプロイのためのコンテナ化
- AWS/Heroku - クラウドデプロイプラットフォーム
コメント
Markdown 対応