如何使 Django 自定义管理命令参数不需要?
How to make a Django custom management command argument not required?
我正尝试在 django 中编写自定义管理命令,如下所示-
class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument('delay', type=int)
def handle(self, *args, **options):
delay = options.get('delay', None)
print delay
现在,当我 运行 宁 python manage.py mycommand 12
它正在控制台上打印 12。哪个好。
现在如果我尝试 运行 python manage.py mycommand
那么我想要那个,命令默认在控制台上打印 21。但它给了我这样的东西-
usage: manage.py mycommand [-h] [--version]
[-v {0,1,2,3}]
[--settings SETTINGS]
[--pythonpath PYTHONPATH]
[--traceback]
[--no-color]
delay
那么现在,我应该如何使命令参数 "not required" 并在没有给出值时取默认值?
documentation 中的一个食谱建议:
For positional arguments with nargs equal to ?
or *
, the default
value is used when no command-line argument was present.
所以下面应该可以解决问题(如果提供,它将 return 值或否则为默认值):
parser.add_argument('delay', type=int, nargs='?', default=21)
用法:
$ ./manage.py mycommand
21
$ ./manage.py mycommand 4
4
您可以对可选关键字参数使用破折号语法:
class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument("-d", "--delay", type=int)
def handle(self, *args, **options):
delay = options["delay"] if options["delay"] else 21
print(delay)
使用:
$ python manage.py mycommand -d 4
4
$ python manage.py mycommand --delay 4
4
$ python manage.py mycommand
21
文档:
简单说明:
我正尝试在 django 中编写自定义管理命令,如下所示-
class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument('delay', type=int)
def handle(self, *args, **options):
delay = options.get('delay', None)
print delay
现在,当我 运行 宁 python manage.py mycommand 12
它正在控制台上打印 12。哪个好。
现在如果我尝试 运行 python manage.py mycommand
那么我想要那个,命令默认在控制台上打印 21。但它给了我这样的东西-
usage: manage.py mycommand [-h] [--version]
[-v {0,1,2,3}]
[--settings SETTINGS]
[--pythonpath PYTHONPATH]
[--traceback]
[--no-color]
delay
那么现在,我应该如何使命令参数 "not required" 并在没有给出值时取默认值?
documentation 中的一个食谱建议:
For positional arguments with nargs equal to
?
or*
, thedefault
value is used when no command-line argument was present.
所以下面应该可以解决问题(如果提供,它将 return 值或否则为默认值):
parser.add_argument('delay', type=int, nargs='?', default=21)
用法:
$ ./manage.py mycommand
21
$ ./manage.py mycommand 4
4
您可以对可选关键字参数使用破折号语法:
class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument("-d", "--delay", type=int)
def handle(self, *args, **options):
delay = options["delay"] if options["delay"] else 21
print(delay)
使用:
$ python manage.py mycommand -d 4
4
$ python manage.py mycommand --delay 4
4
$ python manage.py mycommand
21
文档:
简单说明: