【Django】管理コマンドまとめ(django-admin、manage.py)
2021.12.15 /
本記事はDjangoで開発や運用で使用する「管理コマンド」まとめです。
DjangoでWebアプリケーションを開発・運用する際、管理コマンドユーティリティを介した様々な管理コマンドを使用します。
ここではよく使用するコマンドをまとめています。
管理コマンドユーティリティ
DjangoとはPythonによるWebアプリケーションを簡単に作成するためのフレームワークです。開発に必要な機能が豊富にあるためフルスタックフレームワークと呼ばれます。
そのため開発や運用にとても便利な機能が多数用意されています。
これら機能は管理コマンドユーティリティを介して使用します。管理コマンドユーティリティは以下2つがあります。
- django-admin
- manage.py
django-admin
管理コマンドユーティリティのdjango-adminはDjangoをインストールした直後から利用できます。
ほとんどの場合、プロジェクトを作成するために使用します。
startproject
管理コマンドstartprojectはプロジェクトを新規作成します。
django-admin startproject プロジェクト名 (フォルダ名)
第一引数には作成したい「プロジェクト名」を指定します。第二引数にはプロジェクトフォルダを置く「フォルダ名」を指定します。
プロジェクト構成のための知識
第二引数を省略すると、現在のディレクトリにプロジェクトフォルダが作成されます。第二引数に「.」(ドット)を指定すると、現在のフォルダにプロジェクトフォルダは作成されず、プロジェクトパッケージ(settings.pyが入っているフォルダ)やmanage.pyが作成されます。
manage.py
管理コマンドユーティリティのmanage.pyはstartproject実行後に生成されるモジュールの一つです。
manage.pyはアプリケーションの生成や開発用サーバーの起動など、開発や運用といった様々な場面で使用します。
また管理コマンドは自作することもできます。カスタムコマンドの作成については以下記事をご参照ください。
【Django】定期処理・バックグラウンド実行・バッチ処理ができるカスタムコマンド
startapp
管理コマンドstartappはプロジェクトにアプリケーションを新規作成します。
python manage.py startapp アプリケーション名
アプリケーション作成後、設定ファイルsettings.pyのINSTALLED_APPSに作成したアプリケーションを忘れずに追加しましょう。
makemigrations
管理コマンドmakemigrationsはマイグレーションファイルを生成します。
python manage.py makemigrations (アプリケーション名)
models.pyに基づいて変更の差分からマイグレーションファイル(データベースに反映させるためのSQLを記述したファイル)を生成します。
migrate
管理コマンドmigrateはマイグレーションファイルに基づいてテーブルの作成・変更を行います。
python manage.py migrate (アプリケーション名)
makemigrationsを実行した後にmigrateを実行する流れです。
ロールバックする場合は「アプリケーション名 マイグレーションファイル名」を指定して実行します。
createsuperuser
管理コマンドcreatesuperuserはシステム管理者(スーパーユーザー)を作成します。
python manage.py createsuperuser
対話型でユーザー名、メールアドレス、パスワードを入力してユーザーを作成します。システム管理者を作成することで管理サイトにログインできるようになります。
作成したユーザーの権限は、is_superuserとis_staff、is_activeがTrueで登録されます。
runserver
管理コマンドrunserverは開発用サーバーを起動します。
python manage.py runserver (IPアドレス:ポート番号)
IPアドレスとポート番号は省略して実行できます。省略した場合はIPアドレスが「127.0.0.1」、ポート番号が「8000」でサーバーが起動します。
同じネットワーク内のパソコンから開発サーバーにアクセスしたい場合は以下記事をご参照ください。
【Django】別PC(同一ネットワーク)からローカル開発サーバーにアクセスさせる方法
collectstatic
管理コマンドcollectstaticeは静的ファイルを配信用フォルダにまとめます。
python manage.py collectstatic
開発用サーバーを起動するrunserver時にはcollectstaticを実行する必要はありません。本番環境では実行する必要があります。
設定ファイルsettings.pyのSTATIC_ROOTで指定したパスに静的ファイルをまとめます。
test
管理コマンドtestはユニットテストを実行します。
python manage.py test
test.pyに記述したユニットテストを実行します。
shell
管理コマンドshellは対話型コマンドシェルを起動します。
python manage.py shell
データベースへのクエリ発行や操作のテスト・検証ができます。