mcpField
D
django

django

github.com/microsoft開発2.5k47 回インストール2 日前に更新
リポジトリ

django について

モデル、ビュー、ルーティング、フォーム、管理画面、テストを扱う Django 開発者向けのスキルです。プロジェクト構成、ORM、リクエスト処理、テストの実践方法を案内します。

主な機能

  1. 01Django アプリ構成の指針
  2. 02モデルと ORM クエリの実践
  3. 03ビューと URL の処理パターン
  4. 04認証とクエリ最適化
  5. 05pytest-django のテスト指針

活用シーン

  1. 01ドメイン概念ごとのアプリ整理
  2. 02CRUD ビューの構築とルーティング
  3. 03N+1 データベースクエリの削減
  4. 04データベースを使うビューのテスト

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/microsoft/debugpy --skill django

インストール後、Claude Code で/djangoを入力して読み込まれたか確認します。

詳細

スキル:Django

モデル、ビュー、テンプレート、テストを含む、Django を使った Web 開発のベストプラクティスです。

使用するタイミング

Django プロジェクトで作業する際にこのスキルを適用してください。対象はモデル、ビュー、URL ルーティング、テンプレート、フォーム、管理画面、管理コマンドです。

プロジェクト構成

  • Django の標準的なアプリ構成に従います:models.py、views.py、urls.py、admin.py、tests.py、forms.py。
  • 各アプリは単一のドメイン概念に集中させ、関連のないモデルを含む「何でも入りアプリ」は避けます。
  • 環境ごとの設定には settings/base.py、settings/dev.py、settings/prod.py を使用します。

モデル

  • 管理画面での表示やデバッグ時の可読性を高めるため、モデルには必ず __str__ を定義します。
  • Meta.ordering は控えめに使用します。すべてのクエリに ORDER BY が追加されるためです。クエリセットで明示的に .order_by() を指定してください。
  • filter()/order_by() に使用するフィールドには、データベースインデックス(db_index=True、Meta.indexes)を使用します。
  • 制約付きフィールドには、単なる文字列より choices(または TextChoices/IntegerChoices)を指定した CharField を優先します。
  • 複雑なクエリには F() 式と Q() オブジェクトを使用して、競合状態を避け、可読性を高めます。

ビュー

  • CRUD にはクラスベースビュー(CBV)を優先し、単発のロジックには関数ベースビューを優先します。
  • 必ず queryset を明示的に設定するか、get_queryset() をオーバーライドします。変更可能なクラスレベルの状態に依存してはいけません。
  • N+1 クエリの問題を避けるため、select_related() と prefetch_related() を使用します。
  • LOGIN_URL を設定し、@login_required/LoginRequiredMixin を一貫して使用します。

テスト

  • データベースにアクセスするには、@pytest.mark.django_db と pytest-django を使用します。
  • 明示的なトランザクション制御が必要な場合に限り TestCase または TransactionTestCase を優先し、それ以外の場合は pytest のフィクスチャを使用します。
  • サーバーを起動せずにビューをテストするには、RequestFactory または Client を使用します。
  • テストでモデルを手動で構築する代わりに、baker.make()(model-bakery)またはファクトリーを使用します。

注意点

  • sync_to_async でラップせずに、非同期ビューでブロッキング I/O を実行してはいけません。
  • 循環インポートを避けるため、settings.py や urls.py のモジュールレベルでモデルをインポートしないでください。
  • シークレットを settings.py に保存してはいけません。環境変数を使用します。
  • ORM でクエリを本当に表現できない場合を除き、生の SQL は避けます。

コメント