【发布时间】:2020-03-07 21:25:03
【问题描述】:
我有一个带有以下参数解析器部分的管理命令:
class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument('--out', action='store', dest='out', required=True)
parser.add_argument('--todos', action='store', dest='todos', \
required=True, nargs='+')
parser.add_argument('--filter', action='store', dest='filter')
parser.add_argument('--list', action='store', dest='list')
parser.add_argument('--add_id', action='store_true', dest='add_id')
。我正在尝试从视图/外壳调用此命令,但不起作用:
from django.core.management import call_command
call_command('prg_name', out='/tmp/111.txt')
,但是我收到以下错误:argument --out is required。
程序有点旧: 蟒蛇:2.7 Django:1.11.16
.
我应该如何使用这个旧布局调用带有参数的 call_command?
奇怪的是,如果我这样做:
dt = {'--out=/tmp/111.txt': sth}
call_command(prg_name, *dt)
它有效,但我无法为 --todos 定义更多价值。
【问题讨论】:
-
这里的
sth是什么? -
一些随机值。只是为了让工作成为字典。
-
但是在这里你执行sequence unpacking(只有一个星号
*,而不是多个),因此它只会查看字典的键,但你可以传递一个元组、列表、任何可迭代的对象。
标签: django python-2.7