Django プロジェクトの管理に不可欠な `manage.py` コマンドを目的別にまとめました。
🏗️ プロジェクト・アプリケーション管理
Djangoプロジェクトやアプリケーションの基本的な作成・設定に関連するコマンドです。
コマンド | 説明 | 例 |
---|---|---|
startproject <プロジェクト名> [ディレクトリ] |
新しいDjangoプロジェクトを作成します。ディレクトリを指定しない場合、プロジェクト名のディレクトリが作成されます。 |
|
startapp <アプリ名> [ディレクトリ] |
指定したプロジェクト内に新しいDjangoアプリケーションを作成します。manage.pyと同じ階層で実行します。 |
|
🚀 開発サーバー
開発中にアプリケーションをローカルで実行するためのコマンドです。
コマンド | 説明 | 例 |
---|---|---|
runserver [IPアドレス:ポート番号] |
軽量な開発用Webサーバーを起動します。デフォルトでは 127.0.0.1:8000 で起動します。IPアドレスやポート番号を指定できます。 |
|
💾 データベースマイグレーション
モデルの変更をデータベーススキーマに反映させるためのコマンド群です。
コマンド | 説明 | 例 |
---|---|---|
makemigrations [アプリ名 ...] |
モデルへの変更(フィールド追加、モデル削除など)に基づいて新しいマイグレーションファイルを作成します。アプリ名を指定すると、そのアプリのみが対象になります。 |
|
migrate [アプリ名] [マイグレーション名] |
マイグレーションをデータベースに適用します。アプリ名やマイグレーション名を指定して特定のマイグレーションのみを適用することも可能です。 |
|
showmigrations [アプリ名 ...] |
プロジェクト内の全てのマイグレーションと、それらが適用済みかどうかを表示します。 |
|
sqlmigrate <アプリ名> <マイグレーション名> |
指定されたマイグレーションに対応するSQL文を表示します。データベースには適用しません。 |
|
squashmigrations <アプリ名> <マイグレーション名> |
指定したマイグレーションまでの複数のマイグレーションファイルを一つにまとめます。マイグレーションファイルが増えすぎた場合に利用します。 |
|
🗄️ データベース操作
データベース自体に対する操作やデータの管理を行うコマンドです。
コマンド | 説明 | 例 |
---|---|---|
dbshell |
settings.py で設定されたデータベースのコマンドラインクライアントを起動します。データベース固有のコマンドを実行できます。 |
|
flush |
データベースから全てのデータを削除し、マイグレーション後の初期状態に戻します。注意: データが完全に失われます。 |
|
dumpdata [アプリ名[.モデル名] ...] |
データベースの内容を標準出力にシリアライズ(ダンプ)します。特定のアプリやモデルのデータのみをダンプすることも可能です。フィクスチャとして保存できます。 |
|
loaddata <フィクスチャファイル ...> |
指定されたフィクスチャファイル(JSON, YAML, XML形式など)からデータベースにデータをロードします。 |
|
inspectdb [テーブル名 ...] |
既存のデータベーステーブルをイントロスペクト(調査)し、モデルクラスのPythonコードを標準出力に生成します。既存のデータベースからDjangoモデルを作成する際に役立ちます。 |
|
sqlflush |
flush コマンドが実行するであろう SQL 文を表示します。データベースは変更されません。 |
|
sqlsequencereset <アプリ名 ...> |
主キーシーケンスをリセットするための SQL 文を表示します。シーケンスを持つデータベース(PostgreSQLなど)で、データ削除後にIDの採番をリセットしたい場合などに使用します。SQLiteでは機能しません。 |
|
🧪 テスト
アプリケーションのテストを実行するためのコマンドです。
コマンド | 説明 | 例 |
---|---|---|
test [テスト対象 ...] |
プロジェクト内のテスト(通常 `tests.py` や `tests/` ディレクトリ内の `test_*.py`)を実行します。テスト対象(アプリ名、モジュール名、クラス名、メソッド名)を指定できます。 |
|
🔑 認証・ユーザー管理
ユーザーアカウントや権限に関連するコマンドです。
コマンド | 説明 | 例 |
---|---|---|
createsuperuser |
管理サイト(Admin)にログインするためのスーパーユーザー(管理者)アカウントを作成します。対話形式でユーザー名、メールアドレス、パスワードを設定します。 |
|
changepassword [ユーザー名] |
指定したユーザーのパスワードを変更します。ユーザー名を省略すると、現在のユーザーのパスワードを変更します(通常は使われません)。 |
|
🖼️ 静的ファイル
CSS、JavaScript、画像などの静的ファイルの管理に関するコマンドです。
コマンド | 説明 | 例 |
---|---|---|
collectstatic |
各アプリケーションの静的ファイル(`static`ディレクトリ内)を、settings.py の STATIC_ROOT で指定された単一のディレクトリに集めます。本番環境へのデプロイ時に使用します。 |
|
findstatic <ファイルパス ...> |
指定された静的ファイルが、Djangoの静的ファイル検索メカニズムによってどのパスで見つかるかを表示します。デバッグに役立ちます。 |
|
⏱️ セッション・キャッシュ
セッションデータやキャッシュの管理に関するコマンドです。
コマンド | 説明 | 例 |
---|---|---|
clearsessions |
期限切れのセッションデータをセッションストレージ(データベースなど)から削除します。定期的なクリーンアップに利用します。 |
|
createcachetable [テーブル名 ...] |
データベースキャッシュバックエンドを使用する場合に、キャッシュデータを格納するためのテーブルをデータベースに作成します。 |
|
🌍 国際化・地域化
アプリケーションの多言語対応に関するコマンドです。
コマンド | 説明 | 例 |
---|---|---|
makemessages |
ソースコードやテンプレートから翻訳対象の文字列を抽出し、メッセージファイル(`.po`ファイル)を作成または更新します。 |
|
compilemessages |
`.po`ファイルをコンパイルし、Djangoが実際に使用するバイナリ形式のメッセージファイル(`.mo`ファイル)を作成します。 |
|
🛠️ デバッグ・ユーティリティ
開発やデバッグに役立つ補助的なコマンドです。
コマンド | 説明 | 例 |
---|---|---|
shell |
Djangoプロジェクトの設定を読み込んだ状態でPythonの対話型シェルを起動します。モデルや他のDjangoコンポーネントを直接操作してテストするのに便利です。 |
|
check [アプリ名 ...] |
プロジェクト全体の設定やモデル定義などに問題がないかチェックします。runserver や migrate 実行時にも暗黙的に実行されますが、明示的に実行することもできます。 |
|
diffsettings |
現在の設定(`settings.py`)とDjangoのデフォルト設定との差分を表示します。どの設定が変更されているかを確認するのに役立ちます。 |
|
sendtestemail [メールアドレス ...] |
settings.py のメール設定を使用してテストメールを送信します。メール設定が正しく機能するかを確認できます。メールアドレスを指定しない場合は `settings.ADMINS` に送信されます。 |
|
remove_stale_contenttypes |
削除されたアプリケーションやモデルに関連する古い ContentType オブジェクトをデータベースから削除します。 |
|
✨ カスタムコマンド
アプリケーション固有の管理タスクを実行するために、独自の `manage.py` コマンドを作成できます。
- アプリケーションディレクトリ内に `management/commands` というディレクトリ構造を作成します (`__init__.py` ファイルも各階層に必要です)。
- `commands` ディレクトリ内にコマンド名のPythonファイル (例: `my_command.py`) を作成します。
- ファイル内で `django.core.management.base.BaseCommand` を継承した `Command` クラスを定義します。
- `handle(self, *args, **options)` メソッド内にコマンドのロジックを実装します。
- 必要に応じて `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` です。 |
コメント