2016-11-16 32 views
0

我有以下代碼:如何通過Django管理命令*參數循環?

class Command(BaseCommand): 
    help = 'Build static site output.' 

    def add_arguments(self, parser): 
     parser.add_argument('args') 

    def handle(self, *args, **options): 
     """Request pages and build output.""" 
     if args: 
      pages = args 
      available = list(get_pages()) 
      invalid = [] 
      for page in pages: 
       if page not in available: 
        invalid.append(page) 
      if invalid: 
       msg = 'Invalid pages: {}'.format(', '.join(invalid)) 
       raise CommandError(msg) 
     else: 
      ... 

然而,當我運行此命令:

python prototypes.py build index 

命令遍歷字index的每個字母。

CommandError: Invalid pages: i, n, d, e, x 

我想它來檢測index作爲一個參數,如果我提供更多參數之間應該通過那些被循環空間。

如果我不添加add_arguments方法,它會在控制檯中顯示unrecognized argument

+0

Django的命令使用標準[argparse(https://docs.python.org/3/library/argparse.html)模塊(你得到的解析器ArgumentParser'的'子類)。該文檔相當廣泛,並有幾個例子。這是一個恥辱Django的文檔沒有鏈接到argparse模塊。 – spectras

回答

0

此方法解決了我的問題。

def add_arguments(self, parser): 
    parser.add_argument('args', nargs='+')