スポンサーリンク

【Django】カスタムコマンドを作成してCLIでコマンドを実行する方法

【Django】カスタムコマンドを作成してCLIでコマンドを実行する方法

Djangoで開発を行っているとこの毎回しないといけない作業やちょっとした処理を実行したいことってありますよね。

そんな時にカスタムコマンドを作っておくと開発工数の短縮ができて便利ですよ♪

今回はそんな便利なカスタムコマンドを実装する方法をご紹介いたします!

Djangoのコマンドライン

そもそもDjangoのコマンドラインって?と思われた方もいらっしゃるかと思いますが、Djangoのコマンドとは、

python manage.py runserver
python manage.py migrate

のようなCLIから命令を実行させるようなコマンドのことです。

Djangoにカスタムコマンドを実装していく

今回は実際に簡単なコマンドを用意したいと思います。

「Hello Wrold!」と出力するのが一般的かと思いますが、それでは少し面白みに欠けますね。

今回呼び出すのは運勢占いにしておきましょう。


運勢占いプログラム

import random
import time

def get_unsei():
    unsei_num = random.randint(1,10)
    if unsei_num == 1:
        return "大吉"
    elif 2 <= unsei_num <= 3:
        return "小吉"
    elif 4 <= unsei_num <= 7:
        return "吉"
    elif 8 <= unsei_num <= 9:
        return "凶"
    else:
        return "大凶"

if __name__ == "__main__":
    print("今日のあなたの運勢は……")
    unsei = get_unsei()
    time.sleep(1)
    print(unsei + " です!!")

このプログラムをカスタムコマンドとして実行できるようにしていきましょう。

以下の手順でカスタムコマンドを記述するファイルを作成していきます。

  1. お好きなアプリケーションフォルダの中に「management」フォルダを作成
  2. management」フォルダの中に「commands」フォルダを作成。
  3. commands」フォルダの中に「コマンド名.py」というファイルを作成。

コマンド名は基本的になんでも大丈夫ですが、既存のコマンドと競合しないように気を付けましょう。

今回は「unsei.py」とでもしておきましょう。

そして、「unsei.py」の中にはDjangoのコアファイルの中で定義されている「BaseCommand」を継承してコーディングしてあげます。

実際のコードを見た方が早いと思いますので、見ていきましょう。


import random
import time

from django.core.management import BaseCommand

class Command(BaseCommand):

    def handle(self, *args, **options):
        print("今日のあなたの運勢は……")
        unsei = get_unsei()
        time.sleep(1)
        print(unsei + " です!!")

def get_unsei():
    unsei_num = random.randint(1,10)
    if unsei_num == 1:
        return "大吉"
    elif 2 <= unsei_num <= 3:
        return "小吉"
    elif 4 <= unsei_num <= 7:
        return "吉"
    elif 8 <= unsei_num <= 9:
        return "凶"
    else:
        return "大凶"

「BaseCommand」を継承した「Command」クラスを作成し、その中に処理を改訂っているという感じですね。

それでは、実際にコマンドを使ってみましょう

python manage.py unsei(コマンド名)

実行結果は……

今日のあなたの運勢は……
小吉 です!!

小吉でしたね!皆さんの今日の運勢はいかがでしたか??

こんなくだらないコマンドではなくもっと使い勝手のいいコマンドを用意してあげると開発がはかどっておすすめです!!

cronで定期実行しておきたい処理ってたまに出てきますよね、そういう時にカスタムコマンドを用意してくと便利ですね。

コメント