2016-11-16 8 views
0

У меня есть следующий код:Как я могу выполнить цикл управления Django * args?

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='+')