2016-11-16 33 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='+')