Django管理命令参数

Pet*_*ham 29 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
Run Code Online (Sandbox Code Playgroud)

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

aci*_*unk 57

将此方法添加到Command类:

def add_arguments(self, parser):
    parser.add_argument('my_int_argument', type=int)
Run Code Online (Sandbox Code Playgroud)

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

def handle(self, *args, **options):
    my_int_argument = options['my_int_argument']
Run Code Online (Sandbox Code Playgroud)

这样做的好处是help可以自动生成输出manage.py my_command --help

  • 文档:https://docs.djangoproject.com/en/dev/howto/custom-management-commands/ (4认同)
  • 那么 *args 的目的是什么? (2认同)
  • 添加 *args 和 **kwargs 是 Python 中的标准模式:它确保当人们从此类继承时,您仍然可以在您重写的函数中添加额外的关键字参数。 (2认同)