django manage.py チートシート

cheatsheet

Django プロジェクトの管理に不可欠な `manage.py` コマンドを目的別にまとめました。

Djangoプロジェクトやアプリケーションの基本的な作成・設定に関連するコマンドです。

コマンド 説明
startproject <プロジェクト名> [ディレクトリ] 新しいDjangoプロジェクトを作成します。ディレクトリを指定しない場合、プロジェクト名のディレクトリが作成されます。
# カレントディレクトリにmyprojectを作成
django-admin startproject myproject

# 指定したディレクトリにmyprojectを作成
django-admin startproject myproject /path/to/dir
startapp <アプリ名> [ディレクトリ] 指定したプロジェクト内に新しいDjangoアプリケーションを作成します。manage.pyと同じ階層で実行します。
# pollsアプリケーションを作成
python manage.py startapp polls

🚀 開発サーバー

開発中にアプリケーションをローカルで実行するためのコマンドです。

コマンド 説明
runserver [IPアドレス:ポート番号] 軽量な開発用Webサーバーを起動します。デフォルトでは 127.0.0.1:8000 で起動します。IPアドレスやポート番号を指定できます。
# デフォルトで起動
python manage.py runserver

# ポート8080で起動
python manage.py runserver 8080

# 全てのIPアドレスからアクセス可能にし、ポート8080で起動
python manage.py runserver 0.0.0.0:8080

💾 データベースマイグレーション

モデルの変更をデータベーススキーマに反映させるためのコマンド群です。

コマンド 説明
makemigrations [アプリ名 ...] モデルへの変更(フィールド追加、モデル削除など)に基づいて新しいマイグレーションファイルを作成します。アプリ名を指定すると、そのアプリのみが対象になります。
# 全てのアプリの変更を検出
python manage.py makemigrations

# pollsアプリの変更のみ検出
python manage.py makemigrations polls
migrate [アプリ名] [マイグレーション名] マイグレーションをデータベースに適用します。アプリ名やマイグレーション名を指定して特定のマイグレーションのみを適用することも可能です。
# 全ての未適用マイグレーションを適用
python manage.py migrate

# pollsアプリのマイグレーションを適用
python manage.py migrate polls

# pollsアプリの0001_initialマイグレーションまで適用 (またはロールバック)
python manage.py migrate polls 0001_initial

# 全てのマイグレーションをロールバック (非推奨)
python manage.py migrate zero
showmigrations [アプリ名 ...] プロジェクト内の全てのマイグレーションと、それらが適用済みかどうかを表示します。
# 全てのマイグレーションを表示
python manage.py showmigrations

# pollsアプリとauthアプリのマイグレーションを表示
python manage.py showmigrations polls auth
sqlmigrate <アプリ名> <マイグレーション名> 指定されたマイグレーションに対応するSQL文を表示します。データベースには適用しません。
# pollsアプリの0001_initialマイグレーションのSQLを表示
python manage.py sqlmigrate polls 0001_initial
squashmigrations <アプリ名> <マイグレーション名> 指定したマイグレーションまでの複数のマイグレーションファイルを一つにまとめます。マイグレーションファイルが増えすぎた場合に利用します。
# pollsアプリの0001から0004までをまとめる
python manage.py squashmigrations polls 0004

🗄️ データベース操作

データベース自体に対する操作やデータの管理を行うコマンドです。

コマンド 説明
dbshell settings.py で設定されたデータベースのコマンドラインクライアントを起動します。データベース固有のコマンドを実行できます。
python manage.py dbshell
flush データベースから全てのデータを削除し、マイグレーション後の初期状態に戻します。注意: データが完全に失われます。
# 確認プロンプトが表示される
python manage.py flush

# 確認なしで強制実行 (危険!)
python manage.py flush --noinput
dumpdata [アプリ名[.モデル名] ...] データベースの内容を標準出力にシリアライズ(ダンプ)します。特定のアプリやモデルのデータのみをダンプすることも可能です。フィクスチャとして保存できます。
# 全データをJSON形式でダンプ
python manage.py dumpdata --format=json --indent=2 > alldata.json

# authアプリとpollsアプリのデータをYAML形式でダンプ
python manage.py dumpdata auth polls --format=yaml > fixtures.yaml

# pollsアプリのQuestionモデルのみをダンプ
python manage.py dumpdata polls.Question > questions.json
loaddata <フィクスチャファイル ...> 指定されたフィクスチャファイル(JSON, YAML, XML形式など)からデータベースにデータをロードします。
# alldata.jsonからデータをロード
python manage.py loaddata alldata.json

# 複数のフィクスチャファイルをロード
python manage.py loaddata fixtures.yaml questions.json
inspectdb [テーブル名 ...] 既存のデータベーステーブルをイントロスペクト(調査)し、モデルクラスのPythonコードを標準出力に生成します。既存のデータベースからDjangoモデルを作成する際に役立ちます。
# 全てのテーブルを調査
python manage.py inspectdb

# myapp_mymodelテーブルのみ調査
python manage.py inspectdb myapp_mymodel

# 結果をmodels.pyにリダイレクト
python manage.py inspectdb > models_generated.py
sqlflush flush コマンドが実行するであろう SQL 文を表示します。データベースは変更されません。
python manage.py sqlflush
sqlsequencereset <アプリ名 ...> 主キーシーケンスをリセットするための SQL 文を表示します。シーケンスを持つデータベース(PostgreSQLなど)で、データ削除後にIDの採番をリセットしたい場合などに使用します。SQLiteでは機能しません。
# pollsアプリのシーケンスリセットSQLを表示
python manage.py sqlsequencereset polls

🧪 テスト

アプリケーションのテストを実行するためのコマンドです。

コマンド 説明
test [テスト対象 ...] プロジェクト内のテスト(通常 `tests.py` や `tests/` ディレクトリ内の `test_*.py`)を実行します。テスト対象(アプリ名、モジュール名、クラス名、メソッド名)を指定できます。
# 全てのテストを実行
python manage.py test

# pollsアプリのテストを実行
python manage.py test polls

# pollsアプリの特定のテストクラスを実行
python manage.py test polls.tests.PollsViewTests

# pollsアプリの特定のテストメソッドを実行
python manage.py test polls.tests.PollsViewTests.test_index_view_with_future_poll

# 詳細なログ出力 (レベル3)
python manage.py test -v 3

# テストDBを再利用 (高速化)
python manage.py test --keepdb

# 並列実行 (CPUコア数に応じて)
python manage.py test --parallel auto

🔑 認証・ユーザー管理

ユーザーアカウントや権限に関連するコマンドです。

コマンド 説明
createsuperuser 管理サイト(Admin)にログインするためのスーパーユーザー(管理者)アカウントを作成します。対話形式でユーザー名、メールアドレス、パスワードを設定します。
python manage.py createsuperuser
changepassword [ユーザー名] 指定したユーザーのパスワードを変更します。ユーザー名を省略すると、現在のユーザーのパスワードを変更します(通常は使われません)。
# adminユーザーのパスワードを変更
python manage.py changepassword admin

🖼️ 静的ファイル

CSS、JavaScript、画像などの静的ファイルの管理に関するコマンドです。

コマンド 説明
collectstatic 各アプリケーションの静的ファイル(`static`ディレクトリ内)を、settings.pySTATIC_ROOT で指定された単一のディレクトリに集めます。本番環境へのデプロイ時に使用します。
# 静的ファイルを集める(確認プロンプトあり)
python manage.py collectstatic

# 確認なしで強制実行
python manage.py collectstatic --noinput

# 集める前にSTATIC_ROOTを空にする
python manage.py collectstatic --clear
findstatic <ファイルパス ...> 指定された静的ファイルが、Djangoの静的ファイル検索メカニズムによってどのパスで見つかるかを表示します。デバッグに役立ちます。
# admin/css/base.css の絶対パスを表示
python manage.py findstatic admin/css/base.css

# 複数のファイルパスを検索
python manage.py findstatic css/style.css js/main.js

⏱️ セッション・キャッシュ

セッションデータやキャッシュの管理に関するコマンドです。

コマンド 説明
clearsessions 期限切れのセッションデータをセッションストレージ(データベースなど)から削除します。定期的なクリーンアップに利用します。
python manage.py clearsessions
createcachetable [テーブル名 ...] データベースキャッシュバックエンドを使用する場合に、キャッシュデータを格納するためのテーブルをデータベースに作成します。
# デフォルト名 (settings.pyで指定) のキャッシュテーブルを作成
python manage.py createcachetable

# my_cache_table という名前で作成
python manage.py createcachetable my_cache_table

🌍 国際化・地域化

アプリケーションの多言語対応に関するコマンドです。

コマンド 説明
makemessages ソースコードやテンプレートから翻訳対象の文字列を抽出し、メッセージファイル(`.po`ファイル)を作成または更新します。
# 日本語用のメッセージファイルを作成/更新
python manage.py makemessages -l ja

# 全ての利用可能な言語用ファイルを作成/更新
python manage.py makemessages -a

# 特定のドメイン (djangojs) 用ファイルを作成/更新
python manage.py makemessages -d djangojs -l ja
compilemessages `.po`ファイルをコンパイルし、Djangoが実際に使用するバイナリ形式のメッセージファイル(`.mo`ファイル)を作成します。
# 全ての.poファイルをコンパイル
python manage.py compilemessages

# 日本語の.poファイルのみコンパイル
python manage.py compilemessages -l ja

🛠️ デバッグ・ユーティリティ

開発やデバッグに役立つ補助的なコマンドです。

コマンド 説明
shell Djangoプロジェクトの設定を読み込んだ状態でPythonの対話型シェルを起動します。モデルや他のDjangoコンポーネントを直接操作してテストするのに便利です。
python manage.py shell
>>> from polls.models import Question
>>> Question.objects.all()
check [アプリ名 ...] プロジェクト全体の設定やモデル定義などに問題がないかチェックします。runservermigrate 実行時にも暗黙的に実行されますが、明示的に実行することもできます。
# プロジェクト全体をチェック
python manage.py check

# pollsアプリのみチェック
python manage.py check polls

# デプロイ環境向けのチェック (セキュリティなど)
python manage.py check --deploy
diffsettings 現在の設定(`settings.py`)とDjangoのデフォルト設定との差分を表示します。どの設定が変更されているかを確認するのに役立ちます。
# 変更された設定のみ表示
python manage.py diffsettings

# 全ての設定を表示 (デフォルト値も含む)
python manage.py diffsettings --all
sendtestemail [メールアドレス ...] settings.py のメール設定を使用してテストメールを送信します。メール設定が正しく機能するかを確認できます。メールアドレスを指定しない場合は `settings.ADMINS` に送信されます。
# settings.ADMINS に送信
python manage.py sendtestemail

# 指定したアドレスに送信
python manage.py sendtestemail user1@example.com user2@example.com
remove_stale_contenttypes 削除されたアプリケーションやモデルに関連する古い ContentType オブジェクトをデータベースから削除します。
python manage.py remove_stale_contenttypes

アプリケーション固有の管理タスクを実行するために、独自の `manage.py` コマンドを作成できます。

  1. アプリケーションディレクトリ内に `management/commands` というディレクトリ構造を作成します (`__init__.py` ファイルも各階層に必要です)。
  2. `commands` ディレクトリ内にコマンド名のPythonファイル (例: `my_command.py`) を作成します。
  3. ファイル内で `django.core.management.base.BaseCommand` を継承した `Command` クラスを定義します。
  4. `handle(self, *args, **options)` メソッド内にコマンドのロジックを実装します。
  5. 必要に応じて `add_arguments(self, parser)` メソッドでコマンドライン引数を定義します。

実行例:

python manage.py my_command --option1 value1 argument1

⚙️ 共通オプション

多くの `manage.py` コマンドで共通して利用できるオプションです。

オプション 説明
-h, --help コマンドのヘルプメッセージを表示します。
--version Djangoのバージョンを表示します。
-v {0,1,2,3}, --verbosity {0,1,2,3} コマンド実行時の出力の詳細度を設定します (0: 最小, 1: 通常, 2: 詳細, 3: デバッグ)。デフォルトは1です。
--settings <設定ファイル> 使用する設定ファイルを指定します (例: `myproject.settings_production`)。環境変数 `DJANGO_SETTINGS_MODULE` よりも優先されます。
--pythonpath <パス> Pythonのモジュール検索パス (`sys.path`) にディレクトリを追加します。
--traceback 通常の `CommandError` の代わりに完全なスタックトレースを表示します。デバッグ時に有用です。
--no-color コマンド出力を色付けしません。
--force-color ターミナルがカラーをサポートしていない場合でも、出力を強制的に色付けします。
--skip-checks システムチェック (`check` コマンド) をスキップします。本番環境での使用は推奨されません。
--noinput, --no-input 対話的なプロンプト(確認メッセージなど)を表示しません。自動化スクリプトなどで使用します。
--database <データベースエイリアス> 複数のデータベース設定がある場合に、操作対象のデータベースを指定します。デフォルトは `default` です。

コメント

タイトルとURLをコピーしました