【Django】管理コマンドまとめ(django-admin、manage.py)

2021.12.15 /

【Django】管理コマンドまとめ(django-admin、manage.py)

本記事はDjangoで開発や運用で使用する「管理コマンドまとめです。

DjangoでWebアプリケーションを開発・運用する際、管理コマンドユーティリティを介した様々な管理コマンドを使用します。

ここではよく使用するコマンドをまとめています。

管理コマンドユーティリティ

DjangoとはPythonによるWebアプリケーションを簡単に作成するためのフレームワークです。開発に必要な機能が豊富にあるためフルスタックフレームワークと呼ばれます。

そのため開発や運用にとても便利な機能が多数用意されています。

これら機能は管理コマンドユーティリティを介して使用します。管理コマンドユーティリティは以下2つがあります。

  • django-admin
  • manage.py

django-admin

管理コマンドユーティリティのdjango-adminDjangoをインストールした直後から利用できます。

ほとんどの場合、プロジェクトを作成するために使用します。

startproject

管理コマンドstartprojectはプロジェクトを新規作成します。

構文

django-admin startproject プロジェクト名 (フォルダ名)

第一引数には作成したい「プロジェクト名」を指定します。第二引数にはプロジェクトフォルダを置く「フォルダ名」を指定します。

プロジェクト構成のための知識

第二引数を省略すると、現在のディレクトリにプロジェクトフォルダが作成されます。第二引数に「.」(ドット)を指定すると、現在のフォルダにプロジェクトフォルダは作成されず、プロジェクトパッケージ(settings.pyが入っているフォルダ)やmanage.pyが作成されます。

manage.py

管理コマンドユーティリティのmanage.pystartproject実行後に生成されるモジュールの一つです。

django:manage.pyの位置

manage.pyはアプリケーションの生成や開発用サーバーの起動など、開発や運用といった様々な場面で使用します。

また管理コマンドは自作することもできます。カスタムコマンドの作成については以下記事をご参照ください。

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」でサーバーが起動します。

同じネットワーク内のパソコンから開発サーバーにアクセスしたい場合は以下記事をご参照ください。

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

データベースへのクエリ発行や操作のテスト・検証ができます。