LoginSignup
6

More than 5 years have passed since last update.

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

Posted at

はじめに

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
  3. You can use dark theme
What you can do with signing up
6