Breaking News

Default Placeholder Default Placeholder

ウェブアプリケーションを作る時って、ユーザアクションによる処理ではなく、クーロン などでコマンド実行できる処理も必要になってきますよね。

今回はdjangoでカスタムコマンドを使う方法をまとめてみました。

環境

django: 2.2.4
python: 3.6

ディレクトリ作成

djangoではカスタムコマンドを格納するディレクトリが決まっています。逆にいうと、ここに入れればあとはコマンド実行するだけ!という仕組みになっています。

managementディレクトリとcommandsディレクトリ

必要なディレクトリは2つです。

コマンドを作成したいアプリケーション配下に以下のようにディレクトリを作成してください。

アプリのディレクトリ
|- managementディレクトリ
   |- __init__.py(自分で作成する)
   |- commandsディレクトリ(ここにコマンド実行のファイルを追加していく)
      |- __init__.py(自分で作成する)
      |- コマンド実行したい処理のファイル1
      |- コマンド実行したい処理のファイル2  

上記のようにディレクトリ、ファイルを作る事でコマンドが使えるようになります。

サンプル

# management/commands/sample_command.py
from django.core.management.base import BaseCommand
class Command(BaseCommand):
    def handle(self, *args, **options):
        print("sample_command start!!")

コマンドが使えるようになっているか確認

実際にコマンド実行するときに使用するのはコマンドでの処理を書いた `ファイル名`です。

仮に下記のようにコマンド実行処理のファイルを作ったとしましょう

アプリのディレクトリ
|- managementディレクトリ
   |- __init__.py
   |- commandsディレクトリ
      |- __init__.py
      |- sample_command.py

この場合、実際に使うコマンドは

$ python manage.py sample_command

となります。

このとき、

Unknown command

と出る場合は、ディレクトリの名前が違っていたり、 `__init__.py`がなかったりするので、再度確認してみてください。

実行結果

$ python manage.py sample_command
sample_command start!!

意図したコマンドが実行されている事が確認できました。

以上、djangoでカスタムコマンドを使う方法でした。最後までお読みいただきありがとうございました。