[英]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
那么現在,如果沒有給出值,我應該如何使命令參數“不需要”並采用默認值?
文檔中的一個食譜建議:
對於 nargs 等於
?
或*
,當不存在命令行參數時使用default
值。
因此,以下應該可以解決問題(如果提供,它將返回值,否則將返回默認值):
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
文檔:
簡單解釋:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.