django-admin と manage.pyLink to this heading
django-admin は Django の管理タスクのためのコマンドラインユーティリティです。このドキュメントでは、その機能の全体を一通り説明します。
さらに、manage.py は各 Django プロジェクト内に自動的に作成されます。jango-admin と同じことができますが、DJANGO_SETTINGS_MODULE を設定することもでき、プロジェクトの settings.py を指定できます。
Django を pip 経由でインストールした場合、 django-admin はシステムパス上に設定されているはずです。もしシステムパスにない場合、仮想環境が有効になっていることを確認してください。
通常、単体の Django プロジェクトを用いる場合、django-admin よりも manage.py の方が簡単に利用できます。もし複数の Django 設定ファイル間での切り替えが必要な場合は、django-admin を DJANGO_SETTINGS_MODULE もしくは --settings オプションと共に利用してください。
本項ではコマンドラインの実行例は一貫して django-admin を使用しますが、実行例は全て manage.py もしくは python -m django でも同様に利用可能です。
使い方Link to this heading
Linux / macOS
$ django-admin <command> [options]
$ manage.py <command> [options]
$ python -m django <command> [options]
Windows
...\> django-admin <command> [options]
...\> manage.py <command> [options]
...\> py -m django <command> [options]
command にはこのドキュメントに一覧されたコマンドの1つでなければなりません。options はオプションで、与えられたコマンドで利用できる 0 個以上のオプションを指定します。
ランタイムのヘルプを表示するLink to this heading
- django-admin helpLink to this definition
django-admin help を実行すると、使用方法の情報と、各アプリケーションが提供するコマンドのリストが表示されます。
django-admin help --commands を実行すると、利用可能な全てのコマンドの一覧が表示されます。
django-admin help <command> を実行すると、与えられたコマンドの説明と利用可能なオプションの一覧が表示されます。
アプリ名Link to this heading
多くのコマンドは「アプリ名」のリストを取ります。1つの「アプリ名」はモデルを含むパッケージのベースネーム (basename) となります。たとえば、INSTALLED_APPS が文字列 'mysite.blog' を含む場合、アプリ名は blog になります。
バージョンを特定するLink to this heading
- django-admin versionLink to this definition
django-admin version を実行すると、現在の Django のバージョンが表示されます。
出力は、次のように PEP 440 で説明されたスキーマに従います。
1.4.dev17026
1.4a1
1.4
デバック出力を表示するLink to this heading
サポートされている場合に --verbosity を使うと、django-admin がコンソールに表示する通知とデバッグ情報の量を指定できます。
利用可能なコマンドLink to this heading
checkLink to this heading
- django-admin check [app_label [app_label ...]]Link to this definition
システムチェック フレームワーク を使用して、Django プロジェクト全体のよくある問題を検査します。
デフォルトでは、全てのアプリがチェックされます。アプリのサブセットをチェックするには、次のようにアプリのラベルの一覧を引数として渡します。
django-admin check auth admin myapp
- --tag TAGS, -t TAGSLink to this definition
システムチェック フレームワークは、 タグでカテゴリ化された さまざまな種類のチェックを実行します。これらのタグを使用すると、特定のカテゴリ内のタグだけに実行するチェックを制限できます。たとえば、モデルと互換性のチェックだけを実行するには、次のコマンドを実行します。
django-admin check --tag models --tag compatibility
- --database DATABASELink to this definition
データベースアクセスが必要なチェックを実行するには、次のようにデータベースを指定します。
django-admin check --database default --database other
デフォルトでは、これらのチェックは実行されません。
- --list-tagsLink to this definition
利用可能なタグを一覧します。
- --deployLink to this definition
デプロイメントの設定にだけ関係のある、いくつかの追加チェックを有効化します。
このオプションはローカルの開発環境で使えますが、ローカルの開発の設定モジュールは本番の設定の多くがないかもしれないため、おそらく DJANGO_SETTINGS_MODULE 環境変数を設定するか、--settings オプションを渡すことで、異なる設定モジュールを指定したくなるでしょう。
django-admin check --deploy --settings=production_settings
あるいは、(--settings を省略して) 正しい設定が使用されていることを検証するために、本番かステージングのデプロイメントで直接実行することも可能です。
- --fail-level {CRITICAL,ERROR,WARNING,INFO,DEBUG}Link to this definition
0 以外のステータスでコマンドを終了させるメッセージレベルを指定します。デフォルトは ERROR です。
compilemessagesLink to this heading
- django-admin compilemessagesLink to this definition
ビルトインの gettext サポートで使用できるように、makemessages が作成した .po ファイルを .mo ファイルにコンパイルします。詳しくは 国際化とローカライズ を参照してください。
- --locale LOCALE, -l LOCALELink to this definition
処理する locale を指定します。提供されなかった場合、すべてのロケールが処理されます。
- --exclude EXCLUDE, -x EXCLUDELink to this definition
処理から除外する locale を指定します。提供されなかった場合、どのロケールも除外されません。
- --use-fuzzy, -fLink to this definition
fuzzy な翻訳 をコンパイルされたファイルに含めます
使用例:
django-admin compilemessages --locale=pt_BR
django-admin compilemessages --locale=pt_BR --locale=fr -f
django-admin compilemessages -l pt_BR
django-admin compilemessages -l pt_BR -l fr --use-fuzzy
django-admin compilemessages --exclude=pt_BR
django-admin compilemessages --exclude=pt_BR --exclude=fr
django-admin compilemessages -x pt_BR
django-admin compilemessages -x pt_BR -x fr
- --ignore PATTERN, -i PATTERNLink to this definition
与えられた glob スタイルのパターンに一致するディレクトリを無視します。 何度も無視するためには複数回使用してください。
使用例:
django-admin compilemessages --ignore=cache --ignore=outdated/*/locale
createcachetableLink to this heading
- django-admin createcachetableLink to this definition
設定ファイルからの情報を使用して、データベース キャッシュ バックエンドで使用するためのキャッシュテーブルを作成します。詳細な情報については、 Django のキャッシュフレームワーク を参照してください。
- --database DATABASELink to this definition
キャッシュテーブルを作成するデータベースを指定します。デフォルトは default です。
- --dry-runLink to this definition
実行予定の SQL を、実際には実行せずに出力します。これにより、SQL をカスタマイズしたり、マイグレーション フレームワークを使用できます。
dbshellLink to this heading
- django-admin dbshellLink to this definition
USER や PASSWORD などの設定で指定されたコネクション パラメータを使用して、ENGINE 設定で指定されたデータベースエンジン用のコマンドライン クライアントを実行します。
PostgreSQL の場合、
psqlコマンドライン クライアントが実行されます。MySQL の場合、
mysqlコマンドライン クライアントが実行されます。SQLite の場合、
sqlite3コマンドライン クライアントが実行されます。Oracle の場合、
sqlplusコマンドライン クライアントが実行されます。
このコマンドは、プログラム名 (psql、mysql、sqlite3、sqlplus) の呼び出しで正しい場所にあるプログラムが見つかるように PATH が設定されているを想定しています。プログラムの場所を手動で指定する方法はありません。
- --database DATABASELink to this definition
シェルをオープンするデータベースを指定します。デフォルトは default です。
- -- ARGUMENTSLink to this definition
-- 区切り文字に続く引数は、ベースのコマンドライン クライアントに渡されます。たとえば、PostgreSQL では、次のように psql コマンドの -c フラグを使うことで、素の SQL クエリを直接実行できます。
Linux / macOS
$ django-admin dbshell -- -c 'select current_user'
current_user
--------------
postgres
(1 row)
Windows
...\> django-admin dbshell -- -c 'select current_user'
current_user
--------------
postgres
(1 row)
MySQL/MariaDB では、次のように mysql の -e フラグを使用すると実行できます。
Linux / macOS
$ django-admin dbshell -- -e "select user()"
+----------------------+
| user() |
+----------------------+
| djangonaut@localhost |
+----------------------+
Windows
...\> django-admin dbshell -- -e "select user()"
+----------------------+
| user() |
+----------------------+
| djangonaut@localhost |
+----------------------+
diffsettingsLink to this heading
- django-admin diffsettingsLink to this definition
現在の設定ファイルと Django のデフォルトの設定 (または他の --default で指定された設定ファイル) の違いを表示します。
デフォルトに現れない設定には "###" が続きます。たとえば、デフォルト設定が ROOT_URLCONF を定義していない場合、diffsettings の出力内の ROOT_URLCONF の後には "###" が表示されます
Django のデフォルト値が設定されていたとしても、すべての設定を表示する。このような設定には、前に "###" という接頭辞が付きます。
- --default MODULELink to this definition
現在の設定の比較対象にする設定モジュール。空にすると、Django のデフォルトの設定と比較します。
- --output {hash,unified}Link to this definition
出力フォーマットを指定します。指定可能な値は hash と unified です。hash はデフォルトのモードで、上に説明したような出力を表示します。unified は diff -u に似た出力を表示します。デフォルトの設定はマイナス記号が前に付き、その後にプラス記号が前についた変更された設定が続きます。
dumpdataLink to this heading
- django-admin dumpdata [app_label[.ModelName] [app_label[.ModelName] ...]]Link to this definition
名前を指定したアプリケーションと関連するデータベースの中のすべてのデータを、標準出力にアウトプットします。
アプリケーション名が指定されなかった場合、インストールされたすべてのアプリケーションをダンプします。
dumpdata のアウトプットは loaddata に対するインプットして使用できます。
dumpdata の出力をファイルとして保存すると、 テスト の フィクスチャ や、 初期データ として活用できます。
dumpdata は、ダンプするレコードを選択するために、モデルのデフォルトのマネージャを使用することに注意してください。カスタム マネージャ をデフォルトのマネージャとして使用していて、利用できるレコードの一部をフィルタリングしている場合、必ずしもすべてのオブジェクトがダンプされるわけではありません。
- --all, -aLink to this definition
レコードをダンプする際に、フィルタリングまたは変更される可能性があるカスタム マネージャーの代わりに、Django のベース マネージャを使用します。
- --format FORMATLink to this definition
出力のシリアライズフォーマットを指定します。デフォルトは JSON です。対応フォーマットは シリアライズフォーマット に一覧があります。
- --indent INDENTLink to this definition
出力で使用するインデントのスペースの数を指定します。デフォルトは None で、全てのデータを1行で表示します。
- --exclude EXCLUDE, -e EXCLUDELink to this definition
(app_label.ModelName の形式で指定された) 特定のアプリケーションやモデルがダンプされるのを防ぎます。モデル名を指定した場合には、アプリケーション全体ではなく、そのモデルだけが除外されます。アプリケーション名とモデル名を混ぜることもできます。
複数のアプリケーションを除外したいときは、--exclude を複数回渡してください。
django-admin dumpdata --exclude=auth --exclude=contenttypes
- --database DATABASELink to this definition
データをダンプするデータベースを指定します。デフォルトは default です。
- --natural-foreignLink to this definition
natural_key() モデルメソッドを使用して、任意の外部キーと多対多リレーションを、メソッドを定義している種類のオブジェクトにシリアルライズします。contrib.auth の Permission オブジェクトや contrib.contenttypes の ContentType オブジェクトをダンプする場合、おそらくこのフラグを使う必要があります。このオプションと次のオプションの詳細については、ナチュラルキー のドキュメントを参照しください。
- --natural-primaryLink to this definition
このオブジェクトのシリアライズされたデータのプライマリキーを省略します。これが省略できるのは、デシリアライズ時に計算できるためです。
- --pks PRIMARY_KEYSLink to this definition
カンマで区切られたプライマリキーのリストで指定されたオブジェクトだけを出力します。これは1つのモデルをダンプするときのみ有効です。デフォルトでは、モデルのすべてのレコードが出力されます。
- --output OUTPUT, -o OUTPUTLink to this definition
シリアライズされたデータを書き込むファイルを指定します。デフォルトでは、データは標準出力に出力されます。
このオプションが設定されていて、 --verbosity が 0 (デフォルト) より大きい場合、ターミナルにプログレスバーが表示されます。
フィクスチャの圧縮Link to this heading
出力ファイルは、ファイル名の最後に対応する拡張子をつけることで、 bz2、gz、lzma、xz のいずれかの形式で圧縮できます。たとえば、データを圧縮された JSON ファイルとして出力するには、次のようにします:
django-admin dumpdata -o mydata.json.gz
flushLink to this heading
- django-admin flushLink to this definition
データベースからすべてのデータを削除し、同期後のハンドラを再実行します。マイグレーションが適用されたテーブルはクリアされません。
空のデータベースから始めて、すべてのマイグレーションを再実行したい場合は、代わりにデータベースを削除して再作成してから migrate を実行してください。
- --noinput, --no-inputLink to this definition
すべてのユーザープロンプトを表示しません。
- --database DATABASELink to this definition
フラッシュするデータベースを指定します。デフォルトは default です。
inspectdbLink to this heading
- django-admin inspectdb [table [table ...]]Link to this definition
NAME 設定で指定されたデータベースのテーブルをイントロスペクトし、 Django モデルモジュール (models.py ファイル) を標準出力に出力します。
引数にテーブルやビューの名前を渡すことで、検査するテーブルやビューを選択できます。引数を指定しなかった場合、 --include-views オプションが使用された場合のみ、ビューのモデルが作成されます。PostgreSQL で --include-partitions オプションが使用された場合、パーティションテーブルのモデルが作成されます。
Django で使いたいレガシーデータベースがある場合に使ってください。このスクリプトはデータベースを検査し、各テーブルのモデルを作成します。
ご想像の通り、作成されたモデルはテーブルのすべてのフィールドに対して属性を持ちます。 inspectdb はフィールド名の出力において、いくつかの特殊なケースを持つことに注意してください:
カラムの型をモデルのフィールド型にマッピングできない場合、
inspectdbはTextFieldを使用し、生成されたモデルのフィールドの横に'This field type is a guess.'という Python のコメントを挿入します。 認識されるフィールドはINSTALLED_APPSにリストされているアプリに依存します。たとえば、django.contrib.postgresはいくつかの PostgreSQL 固有のフィールドタイプの認識を追加します。データベースのカラム名が Python の予約語 (
pass',class',for'など) の場合、inspectdbは属性名に'_field'を追加します。 例えば、テーブルに'for'というカラムがある場合、生成されるモデルはフィールド'for_field'を持ち、db_column'属性は'for'に設定されます。その際、inspectdbはフィールドの横に'Field renamed because it was a Python reserved word."という Python コメントを挿入します。
この機能は、決定的なモデル生成としてではなく、ショートカットとして意図されています。 この機能を実行した後、生成されたモデルを自分で見て、カスタマイズしてください。特に、他のモデルを参照するモデルが適切に並ぶように、モデルの順序を並べ替える必要があるでしょう。
Django はモデルフィールドに default が指定されても、データベースのデフォルト値を作成しません。 同様に、データベースのデフォルト値はモデルフィールドのデフォルト値に変換されませんし、 inspectdb によって検出されることもありません。
デフォルトでは、 inspectdb は非管理モデルを作成します。 つまり、モデルの Meta クラスで managed = False を指定することで、 Django は各テーブルの作成、変更、削除を管理しないようになります。テーブルのライフサイクルを Django に管理させたい場合は、 managed オプションを True に変更する必要があります (あるいは、 True がデフォルト値なので削除してください)。
データベース固有の注意事項Link to this heading
OracleLink to this heading
--include-viewsが使用されている場合、モデルはマテリアライズドビューのために作成されます。
PostgreSQLLink to this heading
モデルは外部テーブル用に作成されます。
--include-viewsが使用されている場合、モデルはマテリアライズドビューのために作成されます。--include-partitionsが使用されている場合、モデルはパーティションテーブルに対して作成されます。
- --database DATABASELink to this definition
イントロスペクトするデータベースを指定します。デフォルトは default です。
- --include-partitionsLink to this definition
このオプションを指定すると、パーティション用のモデルも作成されます。
PostgreSQL 向けのサポートのみが実装されています。
- --include-viewsLink to this definition
このオプションを指定すると、データベースビュー用のモデルも作成されます。
loaddataLink to this heading
- django-admin loaddata fixture [fixture ...]Link to this definition
指定された フィクスチャ の内容を検索してデータベースにロードします。
- --database DATABASELink to this definition
データを読み込むデータベースを指定します。デフォルトは default です。
- --ignorenonexistent, -iLink to this definition
フィクスチャが最初に生成されてから削除された可能性のあるフィールドやモデルを無視します。
- --app APP_LABELLink to this definition
すべてのアプリでフィクスチャを探すのではなく、一つのアプリでフィクスチャを探すように指定します。
- --format FORMATLink to this definition
stdin から読み込む フィクスチャの シリアライズフォーマット (json や xml など) を指定します。
- --exclude EXCLUDE, -e EXCLUDELink to this definition
(app_label または app_label.ModelName の形で) 指定されたアプリケーションやモデルからのフィクスチャの読み込みを除外します。複数のアプリやモデルを除外するには、このオプションを複数回使います。
stdin からフィクスチャを読み込むLink to this heading
sys.stdin から入力を読み込むには、フィクスチャ名としてハイフンを使用します。たとえば下記のようにします:
django-admin loaddata --format=json -
stdin から読み込む場合、 --format オプションで入力の シリアライズフォーマット (例 json や xml) を指定する必要があります。
stdin からの読み込みは、標準入出力をリダイレクトするのに便利です。たとえば:
django-admin dumpdata --format=json --database=test app_label.ModelName | django-admin loaddata --format=json --database=prod -
dumpdata コマンドは loaddata の入力を生成するために使用できます。
makemessagesLink to this heading
- django-admin makemessagesLink to this definition
現在のディレクトリのソースツリー全体を走査し、翻訳が必要な文字列をすべて取り出します。conf/locale ディレクトリ (Django ツリーの場合) か locale ディレクトリ (プロジェクトとアプリケーションの場合) にメッセージファイルを作成 (または更新) します。メッセージファイルを変更した後は、組み込みの gettext サポートを使うために compilemessages でコンパイルする必要があります。詳しくは 国際化のドキュメント を参照してください。
このコマンドは設定を必要としません。しかし、設定が構成されていない場合、コマンドは MEDIA_ROOT と STATIC_ROOT ディレクトリを無視したり、 LOCALE_PATHS をインクルードしたりすることはできません。
- --all, -aLink to this definition
利用可能な全ての言語に対してメッセージファイルを更新します。
- --extension EXTENSIONS, -e EXTENSIONSLink to this definition
検査するファイル拡張子のリストを指定します (デフォルト: html、txt、py、 js (--domain が djangojs の場合)。
使用例:
django-admin makemessages --locale=de --extension xhtml
複数の拡張子はカンマで区切るか、-e または --extension を複数回使用してください:
django-admin makemessages --locale=de --extension=html,txt --extension xml
- --locale LOCALE, -l LOCALELink to this definition
処理する場所 (locale) を指定します。
- --exclude EXCLUDE, -x EXCLUDELink to this definition
処理から除外する locale を指定します。提供されなかった場合、どのロケールも除外されません。
使用例:
django-admin makemessages --locale=pt_BR
django-admin makemessages --locale=pt_BR --locale=fr
django-admin makemessages -l pt_BR
django-admin makemessages -l pt_BR -l fr
django-admin makemessages --exclude=pt_BR
django-admin makemessages --exclude=pt_BR --exclude=fr
django-admin makemessages -x pt_BR
django-admin makemessages -x pt_BR -x fr
- --domain DOMAIN, -d DOMAINLink to this definition
メッセージファイルのドメインを指定します。サポートされているオプションは以下の通りです:
*.py、*.html、*.txtファイルすべてに対してdjango(デフォルト)*.jsファイルに対してdjangojs
- --symlinks, -sLink to this definition
新しい翻訳文字列を探すときに、ディレクトリへのシンボリックリンクをたどります。
使用例:
django-admin makemessages --locale=de --symlinks
- --ignore PATTERN, -i PATTERNLink to this definition
与えられた glob スタイルのパターンに一致するファイルやディレクトリを無視します。 何度も無視するためには複数回使用してください。
次のパターンはデフォルトで使われます: 'CVS'、'.*'、'*~'、'*.pyc'。
使用例:
django-admin makemessages --locale=en_US --ignore=apps/* --ignore=secret/*.html
- --no-default-ignoreLink to this definition
--ignore のデフォルト値を無効化します。
- --no-wrapLink to this definition
言語ファイル内で、長いメッセージ行の複数行への分割を無効化します。
- --no-locationLink to this definition
言語ファイル内に '#: filename:line' コメント行を書き込むのを抑制します。このオプションを使うと、技術的な翻訳者がそれぞれのメッセージの文脈を理解することが難しくなります。
- --add-location [{full,file,never}]Link to this definition
言語ファイル中のコメント行 #: filename:line をコントロールします。オプションは下記です:
full(省略時のデフォルト): ファイル名と行番号の両方を含む行を表示します。file: 行番号は省略されます。never: 行の出力が抑制されます (--no-locationと同じ)。
gettext 0.19 以降が必要です。
- --no-obsoleteLink to this definition
廃止されたメッセージ文字列を .po ファイルから削除します。
- --keep-potLink to this definition
.po ファイルが作成される前に生成される一時的な .pot ファイルを削除しないようにします。最終的な言語ファイルが生成されるのを妨げるようなエラーをデバッグするために有用です。
makemigrationsLink to this heading
- django-admin makemigrations [app_label [app_label ...]]Link to this definition
検出されたモデルの変更に基づいて、新しいマイグレーションを作成します。マイグレーションおよびそのアプリとの関係は、詳しくは マイグレーションのドキュメント で説明しています。
1つ以上のアプリ名を引数として与えると、作成するマイグレーションを、指定されたアプリとそれに必要な依存関係 (たとえば、外部キーで繋がれた他のテーブルなど) に限定されます。
マイグレーションを migrations ディレクトリが存在しないアプリに追加するには、makemigrations にアプリの app_label を付けて実行します。
- --noinput, --no-inputLink to this definition
すべてのユーザープロンプトを抑制します。もし、抑制されたプロンプトが自動的に解決できなかった場合は、エラーコード 3 で終了します。
- --emptyLink to this definition
手動で編集するために、指定されたアプリに対する空のマイグレーションを出力します。このオプションは詳しいユーザーのためのもので、マイグレーションのフォーマット、マイグレーション・オペレーション、およびマイグレーション間の依存関係について十分理解していない限り、使うべきではありません。
- --dry-runLink to this definition
実際にマイグレーションをディスクには書き込まず、作成される予定のマイグレーションを表示します。このオプションを --verbosity 3 オプションと併用することで、書き込まれる予定のマイグレーションファイルの内容そのものを表示できます。
- --mergeLink to this definition
マイグレーションで発生するコンフリクトの修復を有効にする
- --name NAME, -n NAMELink to this definition
生成されたマイグレーションに名前を付けることができます。名前は有効な Python 識別子 でなければなりません。
- --no-headerLink to this definition
Django のバージョンとタイムスタンプヘッダなしでマイグレーションファイルを生成します。
- --checkLink to this definition
マイグレーションを伴わないモデル変更が検出された場合に、 makemigrations を 0 以外のステータスで終了するようにします。これは --dry-run を意味します。
- --scriptableLink to this definition
ログ出力と入力プロンプトを stderr に流し、生成されたマイグレーションファイルのパスのみを stdout に書き込みます。
- --updateLink to this definition
モデルの変更を最新のマイグレーションにマージし、その結果生じるオペレーションを最適化します。
更新されたマイグレーションは生成された名前を持ちます。以前の名前を保持するには、--name を使って設定してください。
migrateLink to this heading
- django-admin migrate [app_label] [migration_name]Link to this definition
データベースの状態を、現在のモデルとマイグレーションのセットを基づいて同期します。マイグレーションおよびそのアプリとの関係については、詳しくは マイグレーションのドキュメント で説明しています。
このコマンドの動作は、次のように与えられた引数によって変化します。
引数なし: 全てのアプリが、それぞれが持つマイグレーションを全て実行します。
<app_label>: 指定したアプリに最新のマイグレーションまで実行させます。依存関係によっては、他のアプリのマイグレーションも実行される場合もあります<app_label> <migrationname>: データベーススキーマを、指定した名前のマイグレーションが実行された状態になるようにします。指定したよりも後のマイグレーションは適用されません。指定されたより前のマイグレーションがすでに適用されていた場合など、指定の仕方によってはマイグレーションが実行できない場合があります。アプリに対するすべてのマイグレーションの適用をリセットするには、zeroという名前を指定してください。指定したアプリ名で一意であれば、マイグレーション名のプレフィックス、例えば0001を使用できます。アプリに適用されたマイグレーションをすべて元に戻すにはzeroという名前を指定してください。
- --database DATABASELink to this definition
マイグレートするデータベースを指定します。デフォルトは default です。
- --fakeLink to this definition
(上記のルールに従って)ターゲットのマイグレーションまでを適用されたものとしてマークしますが、データベーススキーマを変更するSQLを実際には実行しません。
これは上級ユーザが手動で変更を適用する場合に、現在のマイグレーション状態を直接操作することを想定しています。 --fake を使用すると、マイグレーションを正しく実行するためにマイグレーション状態テーブルを手動で回復する必要がある状態になる危険性があることに注意してください。
- --fake-initialLink to this definition
マイグレーションに含まれる全ての CreateModel オペレーションで作成された全てのモデルの名前を持つデータベーステーブルが既に存在する場合、 Django がアプリの初期マイグレーションをスキップできるようにします。このオプションは、マイグレーションを使用する前のデータベースに対してマイグレーションを初めて実行するときに使用することを想定しています。しかし、このオプションは、テーブル名の一致以外のデータベーススキーマの一致をチェックしないので、既存のスキーマが初期マイグレーションに記録されているものと一致することを確信している場合のみ安全に使用できます。
- --planLink to this definition
指定された migrate コマンドに対して実行されるマイグレーション・オペレーションを表示します。
- --run-syncdbLink to this definition
マイグレーションせずにアプリ用のテーブルを作成できるようにします。これは推奨されませんが、マイグレーションフレームワークは何百ものモデルがある大規模なプロジェクトでは遅すぎることがあります。
- --noinput, --no-inputLink to this definition
すべてのユーザープロンプトを表示しません。プロンプトの例は、古くなったコンテンツタイプの削除に関する質問です。
- --checkLink to this definition
適用されていないマイグレーションが検出された場合に、 migrate を 0 以外のステータスで終了するようにします。
- --pruneLink to this definition
存在しないマイグレーションを django_migrations テーブルから削除します。これはスカッシュしたマイグレーションによって置き換えられたマイグレーションファイルが削除された場合に便利です。詳細は マイグレーションのスカッシュ (Squash) を参照してください。
optimizemigrationLink to this heading
- django-admin optimizemigration app_label migration_nameLink to this definition
指定されたマイグレーション・オペレーションを最適化し、既存のファイルを上書きします。マイグレーションに手動でコピーしなければならない関数が含まれている場合、このコマンドは _optimized で終わる新しいマイグレーションファイルを作成し、指定されたマイグレーションを置き換えます。
- --checkLink to this definition
マイグレーションを最適化できる場合に、 optimizemigration を 0 以外のステータスで終了するようにします。
runserverLink to this heading
- django-admin runserver [addrport]Link to this definition
ローカルマシンで軽量の開発用ウェブサーバを起動します。デフォルトでは、IPアドレス 127.0.0.1 のポート 8000 で動作します。IPアドレスとポート番号を明示的に渡すこともできます。
このスクリプトを通常の権限を持つユーザ(推奨)で実行した場合、小さいポート番号のポートを起動するためのアクセス権がない可能性があります。小さいポート番号はスーパーユーザ(root)のために予約されています。
このサーバーは WSGI_APPLICATION 設定で指定された WSGI アプリケーションオブジェクトを使用します。
開発サーバーは必要に応じてリクエストごとにPythonコードを自動的にリロードします。コード変更の効果を得るためにサーバーを再起動する必要はありません。しかしながら、ファイルの追加のようないくつかの行動は再起動をトリガーしません、このような場合はサーバーを再起動する必要があります。
Linux や MacOS を使用していて、 pywatchman と Watchman サービスの両方をインストールしている場合、カーネルシグナルがサーバーの自動再ロードに使用されます(毎秒ファイルの変更タイムスタンプをポーリングするのではなく)。これにより、大規模なプロジェクトでのパフォーマンスが改善され、コード変更後の 応答時間が短縮され、変更検出がより強固になり、消費電力が削減されます。Django は pywatchman 1.2.0 以降をサポートしています。
サーバを起動したとき、そしてサーバ起動中に Python コードを変更するたびに、システムチェックフレームワークが Django プロジェクト全体に一般的なエラーがないかチェックします (check コマンドを参照してください)。エラーが見つかった場合、標準出力に出力されます。システムチェックの実行をスキップするには --skip-checks オプションを使います。
django-admin runserver を複数回実行することで、異なるポート上であれば、好きなだけ並列でサーバーを実行できます。
デフォルトの IP アドレス 127.0.0.1 は、同じネットワーク上の他のマシンからはアクセスできないことに注意してください。開発用サーバーを他のマシンから見られるようにするには、ネットワーク上の自分のローカル IP アドレス (例 192.168.2.1) または 0 (0.0.0.0 のショートカット)、 0.0.0.0 、または :: (IPv6を有効にした場合) を使用します。
ブラケットで囲んだ IPv6 アドレス (例 [200a::1]:8000) も使用できます。その場合は、IPv6 のサポートが自動的に有効になります。
ホスト名には ASCII 文字のみからなる文字列も使用できます。
staticfiles contrib アプリが有効になっている場合 (新しいプロジェクトのデフォルト)、 runserver コマンドは独自の runserver コマンドで上書きされます。
サーバの各リクエストとレスポンスのログは django.server ロガーに送られます。
- --noreloadLink to this definition
自動リローダを無効にします。これは、もし特定の Python モジュールが既にメモリに読み込まれている場合、サーバの実行中に行った Python コードの変更は 反映 されないことを意味します。
- --nothreadingLink to this definition
開発サーバーでのスレッドの使用を無効にします。デフォルトではサーバーはマルチスレッドです。
- --ipv6, -6Link to this definition
開発用サーバーで IPv6 を使用します。これにより、デフォルトの IP アドレスが 127.0.0.1 から ::1 に変わります。
異なるポートとアドレスを使用する場合の引数例Link to this heading
IP アドレス 127.0.0.1 上でポート 8000 を使用する場合:
django-admin runserver
IP アドレス 1.2.3.4 上でポート 8000 を使用する場合:
django-admin runserver 1.2.3.4:8000
IP アドレス 127.0.0.1 上でポート 7000 を使用する場合:
django-admin runserver 7000
IP アドレス 1.2.3.4 上でポート 7000 を使用する場合:
django-admin runserver 1.2.3.4:7000
IPv6 アドレス ::1 上でポート 8000 を使用する場合:
django-admin runserver -6
IPv6 アドレス ::1 上でポート 7000 を使用する場合:
django-admin runserver -6 7000
IPv6 アドレス 2001:0db8:1234:5678::9 上でポート 7000 を使用する場合:
django-admin runserver [2001:0db8:1234:5678::9]:7000
IPv4 アドレスのホスト localhost 上でポート 8000 を使用する場合:
django-admin runserver localhost:8000
IPv6 アドレスのホスト localhost 上でポート 8000 を使用する場合:
django-admin runserver -6 localhost:8000
開発用サーバーで静的 (static) ファイルを配信するLink to this heading
デフォルトでは、開発サーバはサイトの静的ファイル (CSS ファイルや画像、 MEDIA_URL 以下にあるものなど) を配信しません。Django が静的メディアを配信するように設定したい場合は、 静的ファイル (画像、JavaScript、CSS など) を管理する を参照してください。
開発中に ASGI サーバーを使うLink to this heading
Django の runserver コマンドは WSGI サーバーを提供します。ASGI で実行するには、 ASGI サーバー を使う必要があります。Django Daphne プロジェクトは、 runserver との統合 を提供しています。
sendtestemailLink to this heading
- django-admin sendtestemail [email [email ...]]Link to this definition
(Django によるメール送信が動作していることを確認するために)指定した受信者にテストメールを送信します。たとえば以下のようにします:
django-admin sendtestemail foo@example.com bar@example.com
いくつかのオプションがあるので、次のようにそれらを任意に組み合わせて使用できます。
- --managersLink to this definition
mail_managers() を使用して MANAGERS で指定されたメールアドレスにメールします。
- --adminsLink to this definition
mail_admins() を使用して ADMINS で指定されたメールアドレスにメールします。
shellLink to this heading
- django-admin shellLink to this definition
Python のインタラクティブ・インタープリタを開始します。
- --interface {ipython,bpython,python}, -i {ipython,bpython,python}Link to this definition
使用するシェルを指定します。デフォルトでは、Django はインストールされている場合には IPython または bpython を使用します。両方インストールされている場合には、次のようにして使いたいシェルを指定してください。
IPython:
django-admin shell -i ipython
bpython:
django-admin shell -i bpython
"リッチな" シェルをインストールしているが、"プレーン" な Python インタプリタを強制的に使いたい場合は、インターフェイス名として python を次のように使用します:
django-admin shell -i python
- --no-startupLink to this definition
"プレーン" Python インタプリタのスタートアップスクリプトを読み込まないようにします。デフォルトでは PYTHONSTARTUP 環境変数か ~/.pythonrc.py スクリプトが指すスクリプトが読み込まれます。
- --command COMMAND, -c COMMANDLink to this definition
以下のように、コマンドを文字列で渡して、Django として実行できます:
django-admin shell --command="import django; print(django.__version__)"
標準入力にコードを渡して実行することもできます。たとえば:
$ django-admin shell <<EOF
> import django
> print(django.__version__)
> EOF
Windowsでは、そのプラットフォームでの select.select() の実装制限に応じて REPL が出力されます。
showmigrationsLink to this heading
- django-admin showmigrations [app_label [app_label ...]]Link to this definition
プロジェクト内のすべてのマイグレーションを表示します。2つの形式から選択できます:
- --list, -lLink to this definition
Django が知っている全てのアプリ、各アプリで利用可能なマイグレーション、各マイグレーションが適用されているかどうか(マイグレーション名の横に [X] と表示されます)を一覧表示します。また、 --verbosity が 2 以上の場合、適用された日時も表示されます。
マイグレーションのないアプリもリストアップされますが、その下に (no migrations) と表示されます。
これはデフォルトの出力形式です。
- --plan, -pLink to this definition
Django が適用するマイグレーションの計画を表示します。 list と同様に、適用されたマイグレーションは [X] でマークされます。また、 --verbosity が 2 以上の場合、マイグレーションの全ての依存関係も表示されます。
app_label 引数によって出力は制限されますが、提供されたアプリの依存関係も含めることができます。
- --database DATABASELink to this definition
検査するデータベースを指定します。デフォルトは default です。
sqlflushLink to this heading
- django-admin sqlflushLink to this definition
flush コマンドで実行される SQL 文を表示します。
- --database DATABASELink to this definition
SQLを表示するデータベースを指定します。デフォルトは default です。
sqlmigrateLink to this heading
- django-admin sqlmigrate app_label migration_nameLink to this definition
指定された名前のマイグレーション用の SQL を出力します。これは、制約名の解決に使用するアクティブなデータベース接続を必要とします。つまり、後で適用したいデータベースのコピーに対して SQL を生成する必要があります。
sqlmigrate は出力に色をつけないことに注意してください。
- --backwardsLink to this definition
マイグレーションの適用を取り消すSQLを生成します。デフォルトでは、マイグレーションを順方向に実行するための SQL が生成されます。
- --database DATABASELink to this definition
SQL を生成するデータベースを指定します。デフォルトは default です。
sqlsequenceresetLink to this heading
- django-admin sqlsequencereset app_label [app_label ...]Link to this definition
指定されたアプリ名のシーケンスをリセットする SQL 文を出力します。
シーケンスは、自動的にインクリメントされるフィールドの次に利用可能な番号を追跡するために、いくつかのデータベースエンジンで使用されるインデックスです。
このコマンドを使用して、シーケンスが自動的にインクリメントされたフィールドデータと同期していないケースを修正するSQLを生成できます。
- --database DATABASELink to this definition
SQLを表示するデータベースを指定します。デフォルトは default です。
squashmigrationsLink to this heading
- django-admin squashmigrations app_label [start_migration_name] migration_nameLink to this definition
migration_name までの app_label のマイグレーションを、可能であればより少ないマイグレーションにスカッシュします。スカッシュされたマイグレーションは、スカッシュされていないマイグレーションと安全に共存できます。詳しくは マイグレーションのスカッシュ (Squash) を参照してください。
start_migration_name を指定すると、 Django はこのマイグレーションから始まり、このマイグレーションを含むマイグレーションだけを取り込みます。これは RunPython と django.db.migrations.operations.RunSQL マイグレーション・オペレーションのスカッシュ制限を緩和するのに役立ちます。
- --no-optimizeLink to this definition
スカッシュされたマイグレーションを生成する際に、オプティマイザを無効にします。デフォルトでは、 Django はマイグレーションする際の処理を最適化し、結果のファイルサイズを小さくしようとします。この処理が失敗したり、正しくないマイグレーションを作成したりする場合は、このオプションを使ってください。最適化は安全であることを意図しているので、その動作について Django バグレポートを提出してください。
- --noinput, --no-inputLink to this definition
すべてのユーザープロンプトを表示しません。
- --squashed-name SQUASHED_NAMELink to this definition
スカッシュされたマイグレーションの名前を設定します。省略した場合は、最初と最後のマイグレーションの間に _squashed_ を加えた名前になります。
- --no-headerLink to this definition
Django のバージョンとタイムスタンプのヘッダなしで、スカッシュしたマイグレーションファイルを生成します。
startappLink to this heading
- django-admin startapp name [directory]Link to this definition
指定されたアプリ名の Django アプリディレクトリ構造を、カレントディレクトリか、指定された保存先に作成します。
デフォルトでは、新しいディレクトリ には models.py ファイルと他のアプリテンプレートファイルが含まれます。アプリ名だけが与えられた場合、アプリディレクトリは現在の作業ディレクトリに作成されます。
オプションで保存先を指定すると、 Django は新しいディレクトリを作成するのではなく、既存のディレクトリを使用します。現在の作業ディレクトリを表すには "." を使用してください。
例:
django-admin startapp myapp /Users/jezdez/Code/myapp
- --template TEMPLATELink to this definition
カスタムアプリテンプレートファイルを含むディレクトリへのパス、または圧縮されていないアーカイブ (.tar) や圧縮されたアーカイブ (.tar.gz, .tar.bz2, .tar.xz, .tar.lzma, .tgz, .tbz2, .txz, .tlz, .zip) 内のアプリテンプレートファイルを含むパスを指定します。
たとえば、myapp アプリを作成するときに、指定されたディレクトリのアプリテンプレートを探すには以下のようにします:
django-admin startapp --template=/Users/jezdez/Code/my_app_template myapp
Djangoは、アプリテンプレートファイルを含む圧縮アーカイブへのURL (http、https、ftp) も受け付けることができ、それらをダウンロードしてリアルタイムで展開します。
たとえば、GitHub の zip ファイルとしてリポジトリを公開する機能を使えば、次のような URL を使うことができます:
django-admin startapp --template=https://github.com/githubuser/django-app-template/archive/main.zip myapp
- --extension EXTENSIONS, -e EXTENSIONSLink to this definition
アプリテンプレート内のどの拡張子をテンプレートエンジンでレンダリングするかを指定します。デフォルトは py です。
- --name FILES, -n FILESLink to this definition
(--extension にマッチするものに加えて) アプリテンプレート内のどのファイルをテンプレートエンジンでレンダリングするかを指定します。デフォルトは空のリストです。
- --exclude DIRECTORIES, -x DIRECTORIESLink to this definition
.git と __pycache__ に加えて、アプリテンプレート内のどのディレクトリを除外するかを指定します。このオプションを指定しない場合、__pycache__ という名前のディレクトリや、. で始まるディレクトリは除外されます。
マッチする全てのファイルに使用される テンプレートコンテキスト は以下の通りです:
startappコマンドに渡されたオプション (コマンドでサポートされているオプションに限る)app_name-- コマンドに渡されたアプリ名app_directory-- 新規作成されたアプリのフルパスcamel_case_app_name-- キャメルケース形式のアプリ名docs_version-- ドキュメントのバージョン:'dev'または1.x'django_version-- Django のバージョン、例えば'2.0.3'。
startprojectLink to this heading
- django-admin startproject name [directory]Link to this definition
指定されたプロジェクト名の Django プロジェクトディレクトリ構造を、カレントディレクトリか指定された保存先に作成します。
デフォルトでは、 新しいディレクトリ には manage.py とプロジェクトパッケージ (settings.py と他のファイルを含む) があります。
プロジェクト名だけを指定した場合、プロジェクトディレクトリとプロジェクトパッケージは <projectname> という名前になり、プロジェクトディレクトリは現在の作業ディレクトリに作成されます。
オプションで保存先を指定すると、 Django はその既存のディレクトリをプロジェクトディレクトリとして使用し、 manage.py とその中にプロジェクトパッケージを作成します。現在の作業ディレクトリを表すには "." を使用してください。
例:
django-admin startproject myproject /Users/jezdez/Code/myproject_repo
- --template TEMPLATELink to this definition
カスタムプロジェクトテンプレートのディレクトリ、ファイルパス、または URL を指定します。例と使い方は startapp --template のドキュメントを参照してください。
- --extension EXTENSIONS, -e EXTENSIONSLink to this definition
プロジェクトテンプレート内のどの拡張子をテンプレートエンジンでレンダリングするかを指定します。デフォルトは py です。
- --name FILES, -n FILESLink to this definition
(--extension にマッチするものに加えて) プロジェクトテンプレート内のどのファイルをテンプレートエンジンでレンダリングするかを指定します。デフォルトは空のリストです。
- --exclude DIRECTORIES, -x DIRECTORIESLink to this definition
.git と __pycache__ に加えて、プロジェクトテンプレート内のどのディレクトリを除外するかを指定します。このオプションを指定しない場合、__pycache__ という名前のディレクトリや、. で始まるディレクトリは除外されます。
使用される テンプレートコンテキスト は以下の通りです:
startprojectコマンドに渡されたオプション (コマンドでサポートされているオプションに限る)project_name-- コマンドに渡されたプロジェクト名project_directory-- 新規作成されたプロジェクトのフルパスsecret_key--SECRET_KEY設定用のランダムなキー。docs_version-- ドキュメントのバージョン:'dev'または1.x'django_version-- Django のバージョン、例えば'2.0.3'。
startapp で説明した レンダリングに関する警告 と 信頼されたコードに関する警告 も参照してください。
testLink to this heading
- django-admin test [test_label [test_label ...]]Link to this definition
インストールされている全てのアプリのテストを実行します。詳しくは Django におけるテスト を参照してください。
- --failfastLink to this definition
テストが失敗したら直ちにテストの実行を停止し、失敗を報告します。
- --testrunner TESTRUNNERLink to this definition
テストの実行に使われるテストランナークラスを制御します。この値は TEST_RUNNER 設定によって提供される値を上書きします。
- --noinput, --no-inputLink to this definition
すべてのユーザープロンプトを表示しません。典型的なプロンプトは、既存のテストデータベースの削除に関する警告です。
テストランナーのオプションLink to this heading
test コマンドは指定された --testrunner の代わりにオプションを受け取ります。これらはデフォルトのテストランナーである DiscoverRunner のオプションです。
- --keepdbLink to this definition
テスト実行の間、テストデータベースを保持します。これには、作成と破棄の両方のアクションを省略できるという利点があり、 特に大規模なテストスイートにおけるテストの実行時間を大幅に短縮できます。テストデータベースが存在しない場合は、最初の実行時に作成され、それ以降の実行時に保存されます。MIGRATE テスト設定が False でない限り、テストスイートを実行する前に、未適用のマイグレーションもテストデータベースに適用されます。
- --shuffle [SEED]Link to this definition
テストを実行する前に、テストの順番をランダムにします。これは、適切に分離されていないテストの検出に役立ちます。このオプションで生成されるテストの順番は、 与えられた整数シードの決定論的な関数です。シードが渡されない場合は、ランダムにシードが選ばれてコンソールに出力されます。特定のテスト順序を繰り返すには、シードを渡します。このオプションで生成されるテスト順序は Django の テスト順序における保証 を保持します。また、テストはテストケースクラスごとにグループ化されます。
シャッフルされた順序は、分離の問題を絞り込む際に有用な特別な一貫性を持っています。つまり、シードを指定してテストのサブセットを実行する場合、新しい順序はより小さなセットに制限されつつ、元のシャッフル順序を維持します。同様に、シードを同じに保ちながらテストを追加すると、元のテストの順序は新しい順序でも同じままです。
- --reverse, -rLink to this definition
テストケースを逆の実行順序で並べ替えます。これは適切に分離されていないテストの副作用をデバッグする際に役立つかもしれません。 テストクラス によるグループ化は、このオプションを使用しても保持されます。 --shuffle と組み合わせて使用することで、特定のシードの順番を逆にできます。
- --debug-modeLink to this definition
テストを実行する前に DEBUG 設定を True に設定します。これはテストの失敗のトラブルシューティングに役立ちます。
- --debug-sql, -dLink to this definition
失敗したテストの SQL ロギング を有効にします。もし --verbosity が 2 なら、パスしたテストのクエリも出力されます。
- --parallel [N]Link to this definition
- DJANGO_TEST_PROCESSESLink to this definition
別々の並列プロセスでテストを実行します。現代のプロセッサは複数のコアを備えているため、これによってテストの実行速度を大幅に向上させることができます。
値を指定せずに --parallel を使用した場合、または値 auto を指定した場合、 multiprocessing.cpu_count() に従って各コアに 1 つのテストプロセスを実行します。これをオーバーライドするには、必要なプロセス数、たとえば --parallel 4 を渡すか、 DJANGO_TEST_PROCESSES 環境変数を設定します。
Django はテストケース (unittest.TestCase サブクラス) をサブプロセスに分散します。設定されたプロセス数よりもテストケースクラスの数が少ない場合、 Django はそれに応じてプロセス数を減らします。
各プロセスごとに個別のデータベースを持つため、異なるテストケースクラスが同じリソースにアクセスしないように注意が必要です。たとえば、複数のテストケースクラスがファイルシステムにアクセスするような場合には、各テストケースクラスごとに個別に一時ディレクトリを作成するようにしてください。
このオプションはトレースバックを正しく表示するために、サードパーティの tblib パッケージが必要です:
$ python -m pip install tblib
この機能はWindowsでは使用できません。Oracleデータベースのバックエンドでも動作しません。
テストのデバッグ中に pdb を使用したい場合は、並列実行を無効にする必要があります (--parallel=1) 。そうしないと bdb.BdbQuit のようなメッセージが表示されます。
- --tag TAGSLink to this definition
指定したタグ でマークされたテストのみを実行します。test --exclude-tag と組み合わせて複数回指定できます。
ロードに失敗したテストは常にマッチしたとみなされます。
- --exclude-tag EXCLUDE_TAGSLink to this definition
指定したタグ でマークされたテストを除外します。test --tag と組み合わせて複数回指定できます。
- -k TEST_NAME_PATTERNSLink to this definition
unittest の -k オプション と同じように、テスト名のパターンにマッチするテストメソッドとクラスを実行します。複数回指定できます。
テストのエラーや失敗のたびに pdb デバッガを起動します。インストールされている場合は、代わりに ipdb が使用されます。
- --buffer, -bLink to this definition
unittest の --buffer オプション と同じように、テストに合格した出力 (stdout と stderr) を破棄します。
- --no-faulthandlerLink to this definition
Django はテストの開始時に faulthandler.enable() を自動的に呼び出します。これにより、インタプリタがクラッシュした場合にトレースバックを表示します。この動作を無効にするには --no-faulthandler を渡してください。
- --timingLink to this definition
データベースのセットアップや総実行時間などのタイミングを出力します。
- --durations NLink to this definition
最も遅い N 個のテストケースを表示します(N=0 の場合はすべて)。
testserverLink to this heading
- django-admin testserver [fixture [fixture ...]]Link to this definition
(runserver のように) 与えられたフィクスチャのデータを使って Django 開発サーバを起動します。
たとえばこのコマンドは、:
django-admin testserver mydata.json
... 以下のステップを実行します:
test データベース で説明されているように、テスト用データベースを作成します。
与えられたフィクスチャからフィクスチャデータをテストデータベースに投入します。(フィクスチャの詳細については、上記の
loaddataのドキュメントを参照してください)。Django 開発サーバを実行します (
runserverのように)。本番用データベースの代わりに、新しく作成したテスト用データベースを指定します。
これはいろいろな面で便利です:
ユニットテスト を書くとき、フィクスチャデータを使ってビューがどのように動作するか、
testserverを使ってウェブブラウザでビューと手動でやりとりできます。Django アプリケーションを開発していて、対話したいデータベースの "まっさらな" コピーがあるとします。データベースを フィクスチャ にダンプし (上で説明した
dumpdataコマンドを使います)、そのデータを使ってtestserverで Web アプリケーションを実行します。この方法では、どんなデータの変更もテスト用のデータベースに対してだけ行われるため、柔軟にデータを変更できます。
このサーバは Python のソースコードの変更を (runserver のように) 自動的に検出することは しない ことに注意してください。しかし、テンプレートの変更は検出します。
- --addrport ADDRPORTLink to this definition
デフォルトの 127.0.0.1:8000 とは異なるポート、または IP アドレスとポートを指定します。この値は runserver コマンドの引数と全く同じフォーマットで、全く同じ機能を果たします。
例:
ポート7000で fixture1 と fixture2 を使ってテストサーバを動かすには、以下のようにします:
django-admin testserver --addrport 7000 fixture1 fixture2
django-admin testserver fixture1 fixture2 --addrport 7000
(上の2つは等価です。オプションがフィクスチャの引数の前でも後でも問題ないことを示すために、この2つを紹介しています)
1.2.3.4:7000 で test フィクスチャを使って実行するには、下記のようにします:
django-admin testserver --addrport 1.2.3.4:7000 test
- --noinput, --no-inputLink to this definition
すべてのユーザープロンプトを表示しません。典型的なプロンプトは、既存のテストデータベースの削除に関する警告です。
アプリケーションが提供するコマンドLink to this heading
いくつかのコマンドは、それを 実装した django.contrib アプリケーションが 有効に なっていないと利用できません。この節では、それらをアプリケーションごとに分類して説明します。
django.contrib.authLink to this heading
changepasswordLink to this heading
- django-admin changepassword [<username>]Link to this definition
このコマンドは Django の 認証システム (django.contrib.auth) がインストールされている場合のみ利用できます。
ユーザのパスワードを変更できます。指定されたユーザの新しいパスワードを2回入力するよう求められます。入力が同じであれば、これが直ちに新しいパスワードになります。ユーザを指定しなかった場合、コマンドはユーザ名が現在のユーザと一致するパスワードを変更しようとします。
- --database DATABASELink to this definition
ユーザーをクエリするデータベースを指定します。デフォルトは default です。
使用例:
django-admin changepassword ringo
createsuperuserLink to this heading
- django-admin createsuperuserLink to this definition
- DJANGO_SUPERUSER_PASSWORDLink to this definition
このコマンドは Django の 認証システム (django.contrib.auth) がインストールされている場合のみ利用できます。
superuser アカウント (すべての権限を持ったユーザー) を作成します。このコマンドは、最初に superuser アカウントを作成する場合や、サイトの superuser アカウントをプログラムから自動生成する必要がある場合に便利です。
対話的に実行すると、このコマンドは新しいスーパーユーザアカウントのパスワードを要求します。非対話的に実行する場合、 DJANGO_SUPERUSER_PASSWORD 環境変数を設定することでパスワードを設定できます。そうでない場合、パスワードは設定されず、スーパーユーザーアカウントはパスワードが手動で設定されるまでログインできません。
非インタラクティブモードでは、 USERNAME_FIELD と必須フィールド (REQUIRED_FIELDS にリストされています) はコマンドライン引数で上書きされない限り、環境変数 DJANGO_SUPERUSER_<uppercase_field_name> にフォールバックします。例えば、 email フィールドを指定するには、環境変数 DJANGO_SUPERUSER_EMAIL を使用します。
- --noinput, --no-inputLink to this definition
すべてのユーザープロンプトを表示しません。もし、抑制されたプロンプトが自動的に解決できなかった場合は、エラーコード 1 で終了します。
- --username USERNAMELink to this definition
- --email EMAILLink to this definition
新しいアカウントのユーザー名とメールアドレスはコマンドラインの --username と --email 引数で指定できます。これらのどちらかが与えられない場合、 createsuperuser は対話的に実行する際にその入力を要求します。
- --database DATABASELink to this definition
スーパーユーザ・オブジェクトを保存するデータベースを指定します。
データの入力とバリデーションをカスタマイズしたい場合は、管理コマンドをサブクラス化して get_input_data() をオーバーライドします。既存の実装やメソッドのパラメータの詳細についてはソースコードを参照してください。たとえば、REQUIRED_FIELDS に ForeignKey があり、既存のインスタンスのプライマリキーを入力する代わりにインスタンスを作成できるようにしたい場合に便利です。
django.contrib.contenttypesLink to this heading
remove_stale_contenttypesLink to this heading
- django-admin remove_stale_contenttypesLink to this definition
このコマンドは Django の contenttypes アプリ (django.contrib.contenttypes) がインストールされている場合のみ利用できます。
(削除されたモデルの)古くなったコンテンツタイプをデータベースから削除します。削除されたコンテンツタイプに依存しているオブジェクトも削除されます。削除されたオブジェクトのリストが表示された後、削除を続行できます。
- --database DATABASELink to this definition
使用するデータベースを指定します。デフォルトは default です。
- --include-stale-appsLink to this definition
INSTALLED_APPS から削除された、以前にインストールされたアプリのものを含む、古くなったコンテンツタイプを削除します。デフォルトは False です。
django.contrib.gisLink to this heading
ogrinspectLink to this heading
このコマンドは、GeoDjango (django.contrib.gis) がインストールされている場合のみ使用できます。
GeoDjango のドキュメントの description を参照してください。
django.contrib.sessionsLink to this heading
clearsessionsLink to this heading
- django-admin clearsessionsLink to this definition
cron job に設定したり、直接実行することで、期限切れのセッションを削除できます。
django.contrib.staticfilesLink to this heading
collectstaticLink to this heading
このコマンドは static files アプリケーション (django.contrib.staticfiles) がインストールされている場合のみ使用できます。
staticfiles ドキュメントの description を参照してください。
findstaticLink to this heading
このコマンドは static files アプリケーション (django.contrib.staticfiles) がインストールされている場合のみ使用できます。
staticfiles ドキュメントの description を参照してください。
デフォルトのオプションLink to this heading
コマンドによっては独自のカスタムオプションを使用できるものもありますが、どのコマンドでもデフォルトでは以下のオプションが使用できます:
- --pythonpath PYTHONPATHLink to this definition
与えられたファイルシステムのパスを Python sys.path モジュール属性に追加します。これが指定されていない場合、django-admin は PYTHONPATH 環境変数を使用します。
このオプションは manage.py では不要です。Python のパスの設定は manage.py が行ってくれるからです。
使用例:
django-admin migrate --pythonpath='/home/djangoprojects/myproject'
- --settings SETTINGSLink to this definition
使用する設定モジュールを指定します。設定モジュールは Python パッケージの構文である必要があります (例: mysite.settings)。これが指定されていない場合、 django-admin は DJANGO_SETTINGS_MODULE 環境変数を使用します。
このオプションは manage.py では不要です。デフォルトでは現在のプロジェクトの settings.py を使用するからです。
使用例:
django-admin migrate --settings=mysite.settings
- --tracebackLink to this definition
CommandError が発生した場合、完全なスタックトレースを表示します。デフォルトでは、 django-admin は CommandError が発生するとエラーメッセージを表示し、それ以外の例外が発生すると完全なスタックトレースを表示します。
このオプションは runserver では無視されます。
使用例:
django-admin migrate --traceback
- --verbosity {0,1,2,3}, -v {0,1,2,3}Link to this definition
コマンドがコンソールに表示する通知とデバッグ情報の量を指定します。
0は出力なしを意味します。1は通常の出力を意味します(デフォルト)。2は詳細な出力を意味します。3は 非常に 詳細な出力を意味します。
このオプションは runserver では無視されます。
使用例:
django-admin migrate --verbosity 2
- --no-colorLink to this definition
カラー表示されたコマンドの出力を無効にします。一部のコマンドは、出力をカラー表示するようにフォーマットされます。たとえば、エラーは赤色でコンソールに表示され、SQL文はシンタックスハイライトされます。
使用例:
django-admin runserver --no-color
- --force-colorLink to this definition
シンタックスカラーリング で説明されているように、コマンドの出力が無効になる場合でも出力のカラー表示を強制します。例えば、色付きの出力を別のコマンドにパイプしたい場合などに使用します。
- --skip-checksLink to this definition
コマンドを実行する前のシステムチェックをスキップします。このオプションは requires_system_checks コマンド属性が空のリストやタプルでない場合にだけ有効です。
使用例:
django-admin migrate --skip-checks
追加の便利機能Link to this heading
シンタックスカラーリングLink to this heading
- DJANGO_COLORSLink to this definition
dango-admin / manage.py コマンドは、ターミナルが ANSI カラー出力をサポートしている場合、色分けされた出力を使用します。 --force-color オプションが使用されていない限り、コマンドの出力を他のプログラムにパイプしてもカラー出力は使用されません。
Windows でのサポートLink to this heading
Windows 10 では、 Windows Terminal アプリケーション、 VS Code 、および PowerShell (仮想ターミナル処理が有効になっている場合) では色付きの出力が可能で、デフォルトでサポートされています。
Windows では、レガシーの cmd.exe ネイティブコンソールは ANSI エスケープシーケンスをサポートしていないため、デフォルトではカラー出力ができません。この場合、2つのサードパーティライブラリのどちらかが必要になります:
colorama は、ANSI カラーコードを Windows API 呼び出しに変換する Python パッケージです。Django のコマンドはこのパッケージの存在を検出し、Unix ベースのプラット フォームと同じように、このパッケージのサービスを利用して出力に色をつけます。
coloramaは pip でインストールできます:...\> py -m pip install "colorama >= 0.4.6"ANSICON をインストールします。これは、
cmd.exeが ANSI カラーコードを処理できるようにするサードパーティツールです。Django のコマンドはこのツールの存在を検出し、Unix ベースのプラットフォームと同じように、このツールのサービスを利用して出力に色をつけます。
ターミナルカラーをサポートしているが、Django がサポートしていることを自動的に検出しない Windows の他のモダンなターミナル環境では、 ANSICON="on" という適切な環境変数を設定することで、 ANSICON のインストールを「偽装」することができます。
カラーをカスタマイズするLink to this heading
シンタックスハイライトに使う色はカスタマイズできます。Django には 3 つのカラーパレットが同梱されています:
dark, 黒い背景に白いテキストを表示する端末に適しています。これはデフォルトのパレットです。light, これは白い背景に黒いテキストを表示する端末に適しています。nocolor, これはシンタックスハイライトを無効にします。
パレットを選択するには DJANGO_COLORS 環境変数を設定して使用したいパレットを指定します。例えば、UnixやOS/XのBASHシェルで light パレットを指定するには、ターミナルで以下のように実行します:
export DJANGO_COLORS="light"
使用する色をカスタマイズすることもできます。Django は色が使われる役割(ロール)をいくつか指定しています:
error- 主なエラー。notice- 軽微なエラー。success- 成功。warning- 警告。sql_field- SQL のモデルフィールドの名前。sql_coltype- SQL のモデルフィールドの型。sql_keyword- SQLキーワード。sql_table- SQL 内のモデルの名前。http_info- 1XX HTTP Informational サーバーレスポンス。http_success- 2XX HTTP Success サーバーレスポンス。http_not_modified- 304 HTTP Not Modified サーバーレスポンス。http_redirect- 304以外の3XX HTTPリダイレクトサーバーレスポンス。http_not_found- 404 HTTP Not Found サーバーレスポンス。http_bad_request- 404 以外の 4XX HTTP Bad Request サーバーレスポンス。http_server_error- 5XX HTTP サーバーエラー。migrate_heading- マイグレーション管理コマンドの見出し。migrate_label- マイグレーション名。
これらの各ロールには、以下のリストから特定の前景色と背景色を割り当てることができます:
blackredgreenyellowbluemagentacyanwhite
これらの色はそれぞれ、以下の表示オプションを使って変更できます:
boldunderscoreblinkreverseconceal
色の指定は、次のいずれかのパターンに従います:
role=fgrole=fg/bgrole=fg,option,optionrole=fg/bg,option,option
ここで role は有効な色の役割の名前、 fg は描画色、 bg は背景色、そしてそれぞれの option は色を変更するオプションの一つです。複数の色の指定はセミコロンで区切ります。たとえば以下のようにします:
export DJANGO_COLORS="error=yellow/blue,blink;notice=magenta"
これを指定すると、エラーは青地に黄色の点滅で表示され、通知はマゼンタで表示されます。それ以外の色の役割には色を付けません。
色はベースパレットを拡張して指定することもできます。色指定にパレット名を入れると、そのパレットが意味するすべての色が読み込まれます。つまり:
export DJANGO_COLORS="light;error=yellow/blue,blink;notice=magenta"
これを指定すると、light カラーパレットのすべての色の使用が指定されますが、error と notice の色は指定どおりにオーバーライドされます。
Bash による補完Link to this heading
Bash シェルを使用している場合は、Django bash 補完スクリプトのインストールを検討してください。スクリプトは Django のソース配布元の extras/django_bash_completion にあります。このスクリプトを使うと、django-admin と manage.py コマンドで tab キーによる補完が有効になります。使い方を説明すると、
まず、
django-adminとタイプします。[TAB] キーをクリックし、利用できるオプション一覧を表示します。
sqlとタイプし、[TAB] キーを押すと、名前がsqlで始まるオプション一覧が表示されます。
独自のカスタムアクションを追加したい場合は、カスタム django-admin コマンドの作り方 を読んでください。
Black フォーマッタLink to this heading
startproject, startapp, optimizemigration, makemigrations, squashmigrations によって作成された Python ファイルは、 black コマンドが PATH にあれば、それを使ってフォーマットされます。
もし black がグローバルにインストールされているが、現在のプロジェクトで使用したくない場合は、 PATH を明示的に設定できます:
PATH=path/to/venv/bin django-admin makemigrations
stdout を使用するコマンドでは、必要に応じて出力を black にパイプできます:
django-admin inspectdb | black -
コードから管理コマンドを実行するLink to this heading
- django.core.management.call_command(name, *args, **options)Link to this definition
コードから管理コマンドを呼び出すには call_command() を使います。
name呼び出すコマンドの名前またはコマンド・オブジェクト。オブジェクトがテストに必要でない限り、名前を渡すことが望ましいです。
*argsコマンドが受け付ける引数のリスト。引数は引数パーサに渡されるので、コマンドラインと同じスタイルで使用できます。たとえば、
call_command('flush', '--verbosity=0')のようにします。**optionsコマンドラインで受け付ける名前付きオプション。オプションは引数パーサを起動することなくコマンドに渡されるため、正しい型を渡す必要があります。例えば、
call_command('flush', verbosity=0)(ゼロは文字列ではなく整数でなければなりません)。
例:
from django.core import management
from django.core.management.commands import loaddata
management.call_command("flush", verbosity=0, interactive=False)
management.call_command("loaddata", "test_data", verbosity=0)
management.call_command(loaddata.Command(), "test_data", verbosity=0)
上の interactive オプションのように、引数を取らないコマンドオプションはキーワードとして True または False で渡されることに注意してください。
名前付き引数は、以下の構文のいずれかを使って渡すことができます:
# Similar to the command line
management.call_command("dumpdata", "--natural-foreign")
# Named argument similar to the command line minus the initial dashes and
# with internal dashes replaced by underscores
management.call_command("dumpdata", natural_foreign=True)
# `use_natural_foreign_keys` is the option destination variable
management.call_command("dumpdata", use_natural_foreign_keys=True)
コマンドオプションの中には、 djangoo-admin や manage.py の代わりに call_command() を使用すると異なる名前になるものがあります。たとえば、 django-admin createsuperuser --no-input は call_command('createsuperuser', interactive=False) となります。 call_command() で使用するキーワード引数名を調べるには、コマンドのソースコードで parser.add_argument() に渡される dest 引数を確認してください。
複数のオプションを取るコマンドオプションは、リストで渡します:
management.call_command("dumpdata", exclude=["contenttypes", "auth"])
call_command() 関数の戻り値は、コマンドの handle() メソッドの戻り値と同じです。
出力のリダイレクトLink to this heading
すべてのコマンドは stdout と stderr オプションをサポートしているので、標準出力やエラーのストリームはリダイレクトできます。例えば、次のように書くことができます:
with open("/path/to/command_output", "w") as f:
management.call_command("dumpdata", stdout=f)