2016-11-16 15 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のコマンドは(あなたが得るパーサは 'ArgumentParser'のサブクラスである)標準[argparse](https://docs.python.org/3/library/argparse.html)モジュールを使用しています。ドキュメントは非常に広範で、いくつかの例があります。 Djangoのドキュメントは、argparseモジュールのドキュメントにリンクしていません。 – spectras

答えて

0

この方法は私の問題を解決しました。

def add_arguments(self, parser): 
    parser.add_argument('args', nargs='+') 
関連する問題