我正尝试在 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
那么现在,我应该如何使命令参数“不需要”并在未给出值时采用默认值?
最佳答案
来自 documentation 的食谱之一建议:
For positional arguments with nargs equal to
?
or*
, thedefault
value is used when no command-line argument was present.
所以下面应该可以解决问题(如果提供则返回值,否则返回默认值):
parser.add_argument('delay', type=int, nargs='?', default=21)
用法:
$ ./manage.py mycommand
21
$ ./manage.py mycommand 4
4
关于python - 如何使 Django 自定义管理命令参数不需要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35635128/