matobaの備忘録

育児しながら働くあるエンジニアの記録

djangoは管理コマンドを追加できるという話

今の会社で働き始める前、djangoで管理コマンドを作れることをぼくは知らなかった。

今は、普通にdjangoで作られたアプリケーションを触るし、普通に管理コマンドが作れることは知ってるし、普通に作る。

だけど、入社する前にdjangoチュートリアルをやってただけだと、全然知らなかった。

多分、ぼくと同じような人は、結構世の中にいるような気がするので、簡単に紹介しよう。

ドキュメントは、ここをみると良いと思う。

カスタム django-admin コマンドの実装 | Django documentation | Django

ドキュメントを読んだた書いてあるけど、

myproject/myapp/management/commands/my_custom_command.py

みたいな場所に作る。なぜ、こんなに階層が深いのかなぞだと思ってる。

こんなファイルが、 my_custom_command.py だとする。

from django.core.management.base import BaseCommand

class Command(BaseCommand):
    def handle(self, *args, **options):
          print('hello command')

これで、myappがINSTALLED_APPに入っていたら、my_custom_commndが使えるようになる。

$ python manage.py my_custom_commnd
hello command

パラメータとかも渡せる。詳しくはドキュメントを読むと良さそう。