django-adminとmanage.py

django-adminとmanage.py

プロジェクトの作成やアプリケーションの追加などで必要になるdjango-adminとmanage.pyですが、普段よく使うものから使わないものまで様々なコマンドがあります。
主要なものだけでも覚えておきましょう。

また基本的にはdjango-adminでもmanage.pyでも同じコマンドを使用することができ、結果も変わりません。こちらではユースケースによってどちらがdjango-adminなのかmanage.pyなのか、一般的な方にコマンドを割り当てて説明しています。

django-admin

startproject

Djangoのプロジェクトを作成するときに使用するコマンド。基本的にはDjangoのインストール後初めて使用するコマンドです。

使用例
django-admin startproject プロジェクト名

コマンドサンプル

django-admin startproject sample_project
makemessages

プロダクトを多言語化する際に使います。
実際に日本語でサービスを開発している際にそれぞれの日本語を英訳したいとしましょう。
その際はこのmakemessagesを使用すると、開発者がhtmlファイルなどに記述してあるtransタグをDjangoが検知して、全ての日本語文をpoというファイルに書き起こしてくれます。

使用例
django-admin makemessages -l 言語コード

コマンドサンプル

# 言語を英語化するためのファイルを作成する
django-admin makemessages -l en
compilemessages

こちらも多言語化で使用します。
poファイルに英訳した文を書き込んだらこのコマンドを使用することでDjangoが自動で該当する日本語文を英文に訳してくれるようになります。

コマンドサンプル

django-admin compilemessages

manage.py

startapp

プロジェクトにアプリケーションを追加する際に使用するコマンド。

使用例
python manage.py startapp app名

コマンドサンプル

python manage.py startapp sample_app
runserver

Djangoのサーバーをローカルで稼働させるためのコマンド。

コマンドサンプル

python manage.py runserver
# ポート番号を指定することもできる
python manage.py runserver 8080
createsuperuser

データベースにスーパーユーザーのデータを登録することができる

コマンドサンプル

python manage.py createsuperuser
makemigrations

変更を加えたmodels.pyの情報をデータベースに反映させるためのファイルを作成するコマンド。migrateとセットで覚えましょう。

コマンドサンプル

python manage.py makemigrations
# appを指定することも可能
python manage.py makemigrations sample_app
migrate

作成されたmigrationsファイルを元にデータベースに変更を反映させるコマンド。

コマンドサンプル

python manage.py migrate
# appを指定することも可能
python manage.py migrate sample_app
shell

コマンドラインでPythonやDjangoのコマンドを入力することができる。ここで実際にデータベースの情報を取得したり作成・更新・削除することもできる。
サービスを運用していて実際に直接データに手を加えないといけない時もこのコマンドを使用することが多い。

コマンドサンプル

python manage.py shell
dumpdata

データベースの情報をファイルに書き出すことができる。ファイルの種類をjsonやxmlなどに指定したり、一部のデータのみにするなど制限をかけたりすることができる。

コマンドサンプル

python manage.py dumpdata data.json
# ファイル形式をyamlに
python manage.py dumpdata --format=yaml data.json
# 特定のapp
python manage.py dumpdata account data.json
loaddata

ファイルに記述してあるデータベースのデータ情報を現在のデータベースに書き込むことができる。dumpdataとセットで覚えると良い。

コマンドサンプル

python manage.py loaddata data.json
# ファイル形式をyamlに
python manage.py loaddata --format=yaml data.json
# 特定のapp
python manage.py loaddata account data.json

開発を進めていると特定のタイミングでmanage.pydjango-adminコマンドを使用しなければいけない時がくるのでぜひ覚えておきましょう。