在django视图上将参数传递给management.call_command

时间:2014-03-16 09:40:44

标签: django django-views

我有一个命令,我从命令行运行,它带有两个参数,-tzusb和-e。 我已经转换了它,以便在django视图上调用它。 我有一点小故障, 如何将此参数传递给我在视图中的management.call_command函数? 这是我对此的看法

def tzusbcsv(request):
    management.call_command('artifact_db_loader','artefacts')
    return render_to_response('html/upload.html')

1 个答案:

答案 0 :(得分:16)

在您的命令中,您应找到如下所示的选项定义:

make_option('-tzsub', dest='tzsub', action='store_true', help='Help description...')
make_option('-e', dest='e', action='store_true', help='Help description...')

查看它们并考虑每个的“dest”参数。假设您为-tzsub定义了dest ='tzsub',为-e定义了dest ='e'(如上例所示),您应该以这种方式调用命令:

management.call_command('artifact_db_loader','artefacts', tzsub=True, e=True)

这与从控制台调用命令相同:

python manage.py artifact_db_loader artefacts -tzsub -e

当然,如果参数需要任何参数(因此你在选项定义中有action ='store'),只需用你需要的值替换boolean参数。例如:

management.call_command('artifact_db_loader','artefacts', tzsub='wow!', e=7)

这与以这种方式调用命令相同:

python manage.py artifact_db_loader artefacts -tzsub "wow!" -e 7