概要
Djangoをやっているといつも以下のようなものを入力することになるかと思います。
python manage.py runserver
このrunserverの部分は実は自分で独自に用意することができます。
なので、
python manage.py delete_all_models
とか作って、全てのモデルを消すためのコマンドも作成できます。
ここからは、その方法を紹介します。
コマンド作成の手順
ここでは簡単な手順のみを紹介するので、より詳細なものについては、調べていただきたく思います。
事前準備
コマンドを作成する前に、コマンドを保管する場所をappsのポジションに用意しておくことをお勧めします。
ここからは__commands__というフォルダにコマンドを登録しておく方法を紹介します。
プロジェクトのあるフォルダに以下のように、フォルダを作成します。
[プロジェクトのディレクトリ]
├ manage.py
├ [その他自分用のapps諸々]
└ commands
└management
└commands
├ [ここにコマンドを定義する]
...
次に、コマンドたちを認識させるため、settings.py(人によってはlocal用等分けてるかもしれませんが、そこは合わせてお願いします。)の_INSTALLED_APPS_をいつものように更新します。
INSTALLED_APPS = [
...,
"commands",
]
これで準備は完了です。
コマンドの作成
コマンドの作成方法はいたってシンプルで、フォーマット通りに commands > management > commands
内にファイルを追加するだけでOKです。
またもう一点重要なポイントは、ここで作る__ファイル名がそのままコマンド名になります。
サンプルとしてここからは、"Hello Real World"__と__print__してくれるコマンドを作成します。
ファイルの作成
コマンド名は__HelloUnderWorld__としたいと思います。
from django.core.management.base import BaseCommand
class Command(BaseCommand):
def handle(self, *args, **kwargs):
print("Hello Real World")
__BaseCommand__を継承した__class Command__を作成し、その中の__handle__というメソッドを用意することで、コマンド実行時に呼び出されます。
コマンドの呼び出し
コマンドを実際に呼び出してみると...
>>> python manage.py HelloUnderWorld
Hello Real World
と行った具合になります。
まとめ
以上が最低限のコマンドを作成するための手段となります。
もちろん、ここでモデルをいじる事もできるので、定期的にモデルを確認するためにcronに登録して...なんて事も可能かと思います。
通常のpython同様引数を取る事もできますが、ひとまずはこのあたりで示させていただきます。
気が向きましたら、引数を取る方法も記載したいと思います。
お疲れさまでした。