2016-02-25 47 views
3

我試圖寫在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 

所以,現在,我應該怎麼做的命令參數「不需要」,並採取默認值,如果沒有給定值?

+2

難道你想改變這個'延遲= options.get('delay',None)'這個'delay = options.get('delay',21)'來處理默認值?只是一個猜測。 – idjaw

回答

10

一個從documentation配方的建議:

對於NARGS等於?*位置參數,當沒有命令行參數存在的default值被使用。

所以下面應該做的伎倆(如果提供或將返回值默認值,否則):

parser.add_argument('delay', type=int, nargs='?', default=21) 

用法:

$ ./manage.py mycommand 
21 
$ ./manage.py mycommand 4 
4