プロジェクト管理 ⚙️
Djangoプロジェクトの作成と基本的な管理を行います。
コマンド | 説明 | オプション例 | 注意点/補足 |
---|---|---|---|
startproject <project_name> [directory] |
新しいDjangoプロジェクトを作成します。指定した名前でプロジェクトディレクトリと基本的な設定ファイル群が生成されます。 |
|
[directory] を省略すると、<project_name> という名前のディレクトリが作成され、その中にプロジェクトが配置されます。. を指定するとカレントディレクトリ直下にプロジェクトファイルが展開されます。既存のディレクトリ名は指定できません。 |
check |
プロジェクト全体の設定やモデル定義などに問題がないか静的にチェックします。デプロイ前の確認に役立ちます。 |
|
重大な問題が見つかるとエラーを、軽微な問題や推奨事項は警告を出力します。--deploy オプションは、本番環境向けの設定(DEBUG=False など)に関する追加チェックを行います。 |
アプリケーション管理 🧩
Djangoプロジェクト内のアプリケーション(機能単位のモジュール)を作成・管理します。
コマンド | 説明 | オプション例 | 注意点/補足 |
---|---|---|---|
startapp <app_name> [directory] |
新しいDjangoアプリケーションを作成します。指定した名前でアプリケーションディレクトリと基本的なファイル(models.py , views.py など)が生成されます。 |
|
作成されたアプリケーションは、プロジェクトの settings.py の INSTALLED_APPS に手動で追加する必要があります。Pythonのモジュール名として有効な名前(ハイフン不可など)を使用してください。 |
データベース操作 💾
データベーススキーマのマイグレーション、対話シェル、データ管理などを行います。
マイグレーション管理
コマンド | 説明 | オプション例 | 注意点/補足 |
---|---|---|---|
makemigrations [app_label ...] |
モデルの変更に基づいて新しいマイグレーションファイルを作成します。 |
|
モデルに変更がない場合は何も作成されません。作成されたマイグレーションファイルはバージョン管理に含めるべきです。チーム開発ではコンフリクトに注意が必要です。 |
migrate [app_label] [migration_name] |
未適用のマイグレーションをデータベースに適用し、スキーマを更新します。 |
|
引数なしで実行すると、INSTALLED_APPS 内の全てのアプリケーションの未適用マイグレーションが適用されます。migrate zero はそのアプリのテーブルを全て削除するため、本番環境での使用は非常に危険です。 |
sqlmigrate <app_label> <migration_name> |
指定したマイグレーションが実行するSQL文を表示します。実際にデータベースには適用しません。 |
|
データベースの種類によって生成されるSQLが異なる場合があります。デバッグや適用前の確認に有用です。 |
showmigrations [app_label ...] |
プロジェクト内のマイグレーションの状態(適用済みか未適用か)を一覧表示します。 |
|
[X] は適用済み、[ ] は未適用を示します。 |
データベースシェル
コマンド | 説明 | オプション例 | 注意点/補足 |
---|---|---|---|
dbshell |
settings.py で設定されたデータベースのネイティブなコマンドラインクライアントを起動します。 |
|
データベースクライアント(psql , mysql , sqlite3 など)がシステムにインストールされている必要があります。直接SQLを実行してデータを確認・操作したい場合に便利です。 |
inspectdb [> models.py] |
既存のデータベーススキーマを調査し、Djangoのモデル定義(models.py の内容)を標準出力に生成します。 |
|
生成されたモデルは完璧ではなく、手動での調整(主キー、リレーションシップ、managed = False の設定など)が必要なことが多いです。既存のデータベースからDjangoプロジェクトを始める際の出発点として利用します。 |
データ管理
コマンド | 説明 | オプション例 | 注意点/補足 |
---|---|---|---|
dumpdata [app_label[.ModelName] ...] |
データベースのデータをシリアライズして標準出力に書き出します(フィクスチャのエクスポート)。 |
|
デフォルトのフォーマットはJSONです。YAMLやXMLも指定可能です (PyYAML, xml.dom.minidom が必要)。バックアップや初期データの作成、環境間のデータ移行に利用します。contenttypes と auth.Permission は通常、migrate で管理されるため除外することが多いです。 |
loaddata <fixture_file ...> |
指定されたフィクスチャファイル(dumpdata で作成したものなど)からデータをデータベースに読み込みます。 |
|
ファイル形式(JSON, YAML, XML)は自動で判別されます。フィクスチャファイルは、各アプリケーションディレクトリ内の fixtures サブディレクトリに置くと、ファイル名だけで指定できます。主キーが衝突する場合、既存のデータは上書きされません(エラーになる)。 |
flush |
データベースから全てのデータを削除しますが、マイグレーションによって作成されたテーブル構造は残します。 |
|
⚠️非常に破壊的な操作です。 本番環境での使用は絶対に避けてください。テスト環境や開発初期のリセットにのみ使用します。実行前に確認プロンプトが表示されます。 |
開発サーバー 🖥️
開発目的の軽量なWebサーバーを起動します。
コマンド | 説明 | オプション例 | 注意点/補足 |
---|---|---|---|
runserver [addrport] |
開発用の軽量Webサーバーを起動します。デフォルトでは 127.0.0.1:8000 でリッスンします。 |
|
本番環境での使用は非推奨です。セキュリティやパフォーマンスの観点から、本番では Gunicorn や uWSGI などのWSGIサーバーを使用してください。コードが変更されると自動的にサーバーがリロードされます(--noreload で無効化可)。 |
テスト ✅
アプリケーションのテストを実行します。
コマンド | 説明 | オプション例 | 注意点/補足 |
---|---|---|---|
test [test_label ...] |
プロジェクト内のテストケースを発見し、実行します。 |
|
デフォルトでは、テスト用に別の空のデータベースが作成されます。test_*.py という名前のファイル内の unittest.TestCase サブクラスが検索されます。--keepdb はテスト実行を高速化しますが、既存のDBが変更されるリスクがあります。 |
sendtestemail recipient [recipient ...] |
テスト用のメールを送信します。メール設定(settings.py の EMAIL_* 設定)が正しく機能するか確認するのに使います。 |
|
実際にメールが送信されるため、意図しない宛先に送らないよう注意が必要です。コンソールバックエンド(EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' )を使えば、メール内容はコンソールに出力されます。 |
静的ファイル管理 📁
CSS, JavaScript, 画像などの静的ファイルを管理します。
コマンド | 説明 | オプション例 | 注意点/補足 |
---|---|---|---|
collectstatic |
各アプリケーションの静的ファイル(static ディレクトリ内)や STATICFILES_DIRS で指定された場所にあるファイルを、STATIC_ROOT で指定された単一のディレクトリに収集します。 |
|
本番環境で静的ファイルを配信する前に実行する必要があります。DEBUG = False の場合、Django開発サーバーは静的ファイルを配信しないため、このコマンドで集めたファイルをWebサーバー(Nginxなど)やCDNから配信する設定が必要です。 |
findstatic <staticfile ...> |
指定された静的ファイルが、設定された静的ファイルファインダー(STATICFILES_FINDERS )によってどのパスで見つかるかを検索して表示します。 |
|
静的ファイルのパス設定が正しいか、期待通りにファイルが認識されているかを確認するのに役立ちます。ファイルが見つからない場合、STATICFILES_DIRS の設定やアプリ内の static ディレクトリの配置を確認してください。 |
セッション管理 🍪
ユーザーセッションデータを管理します。
コマンド | 説明 | オプション例 | 注意点/補足 |
---|---|---|---|
clearsessions |
期限切れのセッションデータをストレージ(データベースやファイルシステム)から削除します。 |
|
通常、このコマンドは定期的に(例: cronジョブで毎日)実行することが推奨されます。これにより、不要なデータがストレージを圧迫するのを防ぎます。セッションバックエンドがデータベース(django.contrib.sessions.backends.db )の場合に特に有効です。 |
ユーザー管理 👤
主に管理者ユーザー(スーパーユーザー)を作成します。
コマンド | 説明 | オプション例 | 注意点/補足 |
---|---|---|---|
createsuperuser |
全ての権限を持つ管理者ユーザー(スーパーユーザー)を作成します。対話形式でユーザー名、メールアドレス、パスワードなどを入力します。 |
|
Django管理サイト (/admin/ ) にログインするために必要です。--noinput を使用する場合、ユニーク制約のあるフィールド(デフォルトではユーザー名)が必須で、かつ環境変数などでパスワードが指定されている必要があります。カスタムユーザーモデルを使用している場合、USERNAME_FIELD や REQUIRED_FIELDS の設定に応じてプロンプト内容が変わります。 |
changepassword [username] |
指定したユーザーのパスワードを変更します。ユーザー名を省略すると、現在のログインユーザー(環境変数 USER などから推測)のパスワードを変更しようとします。 |
|
パスワードを忘れた場合や、定期的な変更が必要な場合に利用します。スーパーユーザー権限は不要です。 |
翻訳 (国際化・地域化) 🌍
アプリケーションの多言語対応に必要なメッセージファイルを操作します。
コマンド | 説明 | オプション例 | 注意点/補足 |
---|---|---|---|
makemessages |
ソースコード(Pythonファイル、HTMLテンプレート)から翻訳対象の文字列(_() や {% trans %} などでマークされたもの)を抽出し、メッセージファイル (.po ファイル) を作成または更新します。 |
|
gettext ユーティリティがシステムにインストールされている必要があります。LOCALE_PATHS 設定で指定されたディレクトリ、または各アプリケーションの locale ディレクトリに .po ファイルが生成されます。 |
compilemessages |
.po ファイルを、Djangoが実際に翻訳時に使用するバイナリ形式の .mo ファイルにコンパイルします。 |
|
.po ファイルを編集して翻訳を追加・修正した後に実行する必要があります。gettext ユーティリティが必要です。 |
その他 ✨
その他の便利なコマンド。
コマンド | 説明 | オプション例 | 注意点/補足 |
---|---|---|---|
shell |
Djangoプロジェクトの環境が読み込まれた状態で、Pythonの対話シェル(デフォルトは標準Pythonシェル、IPythonやbpythonがインストールされていればそちらを優先)を起動します。 |
|
モデルをインポートしてデータを操作したり、設定値を確認したり、特定の関数を試したりするのに非常に便利です。デバッグや簡単なデータ操作に適しています。 |
version [app_label ...] |
Djangoのバージョン、および指定されたアプリケーションのバージョン(__version__ 属性があれば)を表示します。 |
|
環境の確認やバグ報告時に役立ちます。 |
diffsettings |
現在のDjangoプロジェクトの設定(settings.py などで定義されたもの)と、Djangoのデフォルト設定との差分を表示します。 |
|
どのような設定項目をカスタマイズしているかを確認するのに便利です。特に、予期せぬ挙動の原因調査や、設定の最適化に役立ちます。 |
runscript <script_name> [script_args ...] |
django-extensions パッケージ(別途インストールが必要)で提供されるコマンド。プロジェクト内の指定されたスクリプト(通常は scripts ディレクトリに配置)をDjangoの環境下で実行します。 |
|
バッチ処理やカスタム管理タスクを実行するのに便利です。スクリプト内ではDjangoのモデルや設定を自由に利用できます。 |
⚠️ 注意:
- このチートシートは一般的なコマンドとオプションを網羅していますが、全てのオプションや詳細な動作については公式ドキュメントを参照してください。
- コマンドによっては、特定のライブラリ(例:
psycopg2
,mysqlclient
,coverage.py
,PyYAML
,django-extensions
)やシステムツール(例:gettext
)が別途必要になる場合があります。 - 破壊的な操作(
flush
など)を実行する際は、対象環境(開発、ステージング、本番)を十分に確認し、必要であればバックアップを取得してください。
コメント