Как сделать аргумент команды управления Django не обязательным?
Я пытаюсь написать пользовательскую команду управления в 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
Итак, как мне сделать аргумент команды "не требуется" и принять значение по умолчанию, если значение не указано?
Ответы
Ответ 1
Один из рецептов документации предлагает:
Для позиционных аргументов с nargs, равными ?
или *
, значение default
используется, если аргумент командной строки отсутствует.
Итак, следующее должно делать трюк (оно будет возвращать значение, если указано или значение по умолчанию в противном случае):
parser.add_argument('delay', type=int, nargs='?', default=21)
Использование:
$ ./manage.py mycommand
21
$ ./manage.py mycommand 4
4