Django
で開発してるといつもどのコマンド使えばいいか忘れちゃうんで、忘れないようにまとめました。
Django
のバージョンは 1.10.3
です。
auth 認証関連
ユーザ認証機能などで利用します。サブコマンドは下記の2つです。それぞれこんな感じで使用します。
changepassword
$ python manage.py changepassword
Changing password for user 'ユーザ名'
Password:
Password (again):
Password changed successfully for user 'ユーザ名'
changepassword
のコマンドは管理者サイトからでも編集できるので、あまり利用頻度は高くないです。
createsuperuser
$ python manage.py createsuperuser
ユーザID:
メールアドレス:
パスワード:
createsuperuser
は必ず使います。というかこのコマンド実行しないと、いつまでたっても管理者サイトにアクセスできません。
debug_toolbar デバッグ関連
デバッグ時にコンソールを開くことができて、発行したSQLを確認したりできます。呼び出し方はこんな感じ。
debugsqlshell
$ python manage.py debugsqlshell
Python 3.5.2 (default, Nov 16 2016, 03:31:08)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>
コンソールが起動するので、あとは確認したいクエリを書いていけばいいんですが、あまり使うことはないですね・・・。
django
Django
のメインのサブコマンドになります。
check
$ python manage.py check
System check identified some issues:
WARNINGS:
?: (urls.W001) Your URL pattern '^$' uses include with a regex ending with a '$'. Remove the dollar from the regex to avoid problems including URLs.
System check identified 1 issue (0 silenced).
Django
プロジェクトのチェックをしてくれます。状況に応じて Error
や Warning
を出力するので、必要に応じて修正して、綺麗なDjango
プロジェクトを作ります。
compilemessages
国際化対応の場合に利用します。いろんな言語に対応する必要があるシステムを作ってる場合には必須のコマンドかと思います。使い方はこんな感じです。
$ python manage.py compilemessages --locale=br_PT
createcachetable
$ python manage.py createcachetable <tablename>
tablename
のところに設定した名前でキャッシュテーブルを作成します。これも普通に開発する分にはあまり使わない気がします。
dbshell
$ python manage.py dbshell
MySQL
とか PostgreSQL
のコンソールが開きます。
diffsettings
$ python manage.py diffsettings
現在の設定ファイルとデフォルトの設定ファイルの差分を表示してくれます。自分で何を設定して何がデフォルトの設定だったかとかが分からなくなった時とかに使えそうです。
設定ファイルって色々さわってると最初の状態がわからなくなることがよくあるので・・・。
dumpdata
$ python manage.py dumpdata <appname appname ...>
appname
で指定したアプリケーションに関連するデータを全て出力します。データ量が多い場合などは注意が必要ですね。
flush
$ python manage.py flush
データベースを syncdb
直後の状態に戻します。データベースを綺麗にしたい時とかに使います。
自分は DB
のテーブルを直接 TRUNCATE
しちゃうことが多いですが。
inspectdb
$ python manage.py inspectdb
DB
の情報を参照して、 models.py
を出力してくれます。システムのリプレースの時などで DB
は変更しないけど、 Web
アプリは変更するケースで使えるかと・・・。
これがあれば、 DB
を解析して models.py
を一から作る苦労をしなくて良くなるかも??
loaddata
$ python manage.py loaddata <fixture fixture ...>
指定したフィクスチャ名と一致するファイルをデータベースにロードします。
テストデータを投入したり、初期データ投入する場合に使えそうです。
makemessages
$ python manage.py makemessages --all
翻訳対象にマークさ れている文字列全てを取り出します。 locale
フォルダの中にメッセージファイルを作成します。
多言語対応が必要なシステムでは必須の機能ですね。
makemigrations
$ python manage.py makemigrations appname
appname
で指定したアプリケーションのマイグレーションファイルを作成します。
models.py
から DB
の差分をマイグレーションファイルとしてまとめてくれます。 appname
は省略可能です。
この機能は利用頻度がかなり高いです。
ただ、一点注意点が・・・。ここで生成されるマイグレーションファイルを Git
などにコミットしてしまうと他の人の DB
環境と不一致を起こしてしまい、うまく動かなくことがあるので、マイグレーションファイルは gitignore
に追加するなどして管理対象外のファイルとしておくことが望ましいです。
というか、そうしておかないと本番環境を構築する際などに100%失敗します。
DB
の方でどのマイグレーションファイルまでを読み込んだかを覚えてるみたいで、そこがずれるとマイグレーションできなくなります。
migrate
$ python manage.py migrate
マイグレーションファイルを使って DB
をマイグレートします。
makemigrations → migrate
っていう流れで実行していきます。
sendtestemail
$ python manage.py sendtestemail <email...>
テストメールを送信してくれるみたいですが、使ったことがないので、あまりよく分からないです・・・。
shell
$ python manage.py shell
Python
のコンソールが起動します。コンソール上で確認したいコードなどがあれば、このコマンドを使ってコンソールを呼び出して、コードを試してみることができます。
showmigrations
$ python manage.py showmigrations
アプリ名とマイグレーション名をリストで表示してくれます。
マイグレーションの漏れがないかなどの確認に使えます。あとはアプリ名を忘れちゃった時とか・・・。
sqlflush
$ python manage.py sqlflush
flush
コマンドで実行される SQL 文
を出力します。 flush
で機械的にやるのが不安な場合や部分的に初期化したい場合などは、こちらのコマンドで SQL 文
を確認してから、DBの初期化など行えばいいと思います。
sqlmigrate
$ python manage.py sqlmigrate
migrate
コマンドで実行される SQL 文
を出力します。マイグレーション時の SQL ログ
が欲しいとか言われた時には使えそうです。
sqlsequencereset
$ python manage.py sqlsequencereset <appname appname ...>
指定した appname
のシークエンスをリセットするための SQL 文
を出力します。
レコードを DELETE
したけど、シーケンスはそのままって状態の時とかに使えそうですね。
squashmigrations
$ python manage.py squashmigrations appname
複数のマイグレーションファイルを一つにまとめてくれます。保守などで長期間メンテナンスしてると、どんどんマイグレーションファイルが増えてきて、マイグレーションの実行にも時間がかかるようになると思いますが、その時は squashmigrations
でマイグレーションファイルを一つにまとめて綺麗にしちゃいましょう。
startapp
$ python manage.py startapp appname
appname
のアプリケーションを作成します。アプリケーションに必要な最低限のファイルを appname
フォルダ直下に作成してくれます。
startproject
$ python manage.py startproject projectname
projectname
のプロジェクトを作成します。 settings.py
や urls.py
ファイルを作成してプロジェクトに必要なファイルを作成してくれます。
test
$ python manage.py test <appname>
appname
で指定したアプリケーションのテストを実行します。コンソール上で成功/失敗を確認することができます。
testserver
$ python manage.py testserver <fixture fixture ...>
指定したフィクスチャを使って開発用サーバを起動します。フィクスチャのデータをテストデータとして使えます。
sessions セッション関連
clearsessions
$ python manage.py clearsessions
セッションをクリアします。あまり使うことはないかも??
staticfiles 静的ファイル関連
collectstatic
$ python manage.py collectstatic
settings.py
で設定した STATIC_ROOT
のパスに静的ファイルを集めてくれるコマンドみたいです。
本番環境で静的ファイルを STATIC_ROOT
のパスに配置し、Webサーバにそのパスへのアクセス権をつけてあげることで、本番環境で静的ファイルを読み込むことができるようになります。
このコマンドを実行しないと Web
サーバは静的ファイルを参照するために、自分で開発した静的ファイルのディレクトリや Django
のフレームワーク自体が保持している静的ファイルのディレクトリに対して個別でアクセス権を設定しなければならなくなります。
本番環境へデプロイする際には忘れずに実行が必要なコマンドですね。
findstatic
$ python manage.py findstatic <filename>
相対パスで指定した filename
のパスを探してくれます。テンプレートとかで呼び出してる静的ファイルの場所が分からなくなったりしたら使えるかも??
runserver
$ python manage.py runserver
開発用サーバが起動します。特に設定とか変更してなければ「 http://localhost:8000
」が起動すると思います。
最後に
manage.py
のコマンドを一通り確認していきましたが、実際に使ってるコマンドって5つくらいしかありませんでした。
まだまだ Django
の全てを使いこなせてないので、これからも精進していきたいと思います。
今回、コマンドを確認してきた中で一番使えそうなコマンドは「 squashmigrations
」だと思います。
マイグレーションファイルって一つにまとめられるってこと、初めて知りました。早速使っていきたいと思います。
コメント