我需要将一个整数参数传递给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。 有没有办法可以通过终端将参数传递给我想要运行的命令?
答案 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)
参数parser
是argparse.ArgumentParser
的实例(请参见the docs)。现在,您可以通过调用parser
的{{1}} method来添加任意数量的参数。在上面的代码中,您期望类型add_argument
的参数n
从int
的{{1}}方法中获得。
如果要查看显示的帮助,请运行以下命令:
handle
这将产生类似于以下内容的输出:
options