如何通过Django管理命令*参数循环?
问题描述:
我有以下代码:如何通过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
。
答
此方法解决了我的问题。
def add_arguments(self, parser):
parser.add_argument('args', nargs='+')
Django的命令使用标准[argparse(https://docs.python.org/3/library/argparse.html)模块(你得到的解析器ArgumentParser'的'子类)。该文档相当广泛,并有几个例子。这是一个耻辱Django的文档没有链接到argparse模块。 – spectras