Django管理命令参数

时间:2014-12-22 22:35:22

标签: python django

我需要将一个整数参数传递给Django中的基本命令。例如,如果我的代码是

from django.core.management import BaseCommand

class Command(BaseCommand):
    def handle(self, *args, **options, number_argument):
        square = number_argument ** 2
        print square

我想说python manage.py square_command 4并让它返回16。 有没有办法可以通过终端将参数传递给我想要运行的命令?

3 个答案:

答案 0 :(得分:52)

将此方法添加到Command类:

def add_arguments(self, parser):
    parser.add_argument('my_int_argument', type=int)

然后您可以在代码中使用您的选项,如下所示:

def handle(self, *args, **options):
    my_int_argument = options['my_int_argument']

这样做的好处是help

自动生成manage.py my_command --help输出

答案 1 :(得分:2)

是。这样做的机制是here,但基本上,您可以从args[0]获取参数。

答案 2 :(得分:0)

通过实现add_arguments method,这非常简单。然后,您可以在handle方法中获取此参数的值,如下所示:

class Command(BaseCommand):
    help = 'Help for command'

    def add_arguments(self, parser):
        parser.add_argument('n', type=int, help='help for n')

    def handle(self, *args, **options):
        n = options['n']
        square = n ** 2
        print(square)

参数parserargparse.ArgumentParser的实例(请参见the docs)。现在,您可以通过调用parser的{​​{1}} method来添加任意数量的参数。在上面的代码中,您期望类型add_argument的参数nint的{​​{1}}方法中获得。

如果要查看显示的帮助,请运行以下命令:

handle

这将产生类似于以下内容的输出:

options