LoginSignup
6

More than 5 years have passed since last update.

posted at

Djangoのカスタムコマンドにパラメータを追加する

はじめに

Django玄人の皆さんにわざわざ説明するまでもないですが、Djangoでは簡単にカスタムコマンドを作成することができます!

$ python manage.py hoge

といった形です。 runserver とか migrate とか makemigrations とかの部分ですね
今回は hoge のあとにパラメータを追加したいなぁと思い実装したのでメモと共有

イメージ
$ python manage.py hoge 1 2

環境

  • Python 3.5.1
  • Django==1.11

実装

$ django-admin.py startapp app

で app という名前のアプリを作成している前提で実装します

app/
  ├── admin.py
  ├── apps.py
  ├── models.py
  ├── tests.py
  └── views.py

と言ったような構成になってるかと思います。変更していなければ

$ mkdir -p app/management/commands
$ cd app/management/commands
$ touch __init__.py
$ touch plus.py # 任意の名前「plus」がカスタムコマンド名になります
hoge.py
from django.core.management.base import BaseCommand, CommandError


class Command(BaseCommand):
    args = '<param_1 param_2 ...>'
    help = 'パラメータの合計を表示するコマンドです'

    def add_arguments(self, parser):
        parser.add_argument('parameters', nargs='+', type=int)

    def handle(self, *args, **options):
        print(sum(options['parameters']))

上記はとりあえずの適当なやつなのでパラメータの加算をして表示するだけのコマンドです。

$ python manage.py plus 1 2 3 4
10

といったような感じになるはずです!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
6