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

Jos*_*hua 10 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')
Run Code Online (Sandbox Code Playgroud)

小智 17

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

make_option('-tzsub', dest='tzsub', action='store_true', help='Help description...')
make_option('-e', dest='e', action='store_true', help='Help description...')
Run Code Online (Sandbox Code Playgroud)

看看它们并考虑每个人的"dest"论点.假设您为-tzsub定义了dest ='tzsub',为-e定义了dest ='e'(如上例所示),您应该以这种方式调用该命令:

management.call_command('artifact_db_loader','artefacts', tzsub=True, e=True)
Run Code Online (Sandbox Code Playgroud)

这与从控制台调用命令是一样的:

python manage.py artifact_db_loader artefacts -tzsub -e
Run Code Online (Sandbox Code Playgroud)

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

management.call_command('artifact_db_loader','artefacts', tzsub='wow!', e=7)
Run Code Online (Sandbox Code Playgroud)

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

python manage.py artifact_db_loader artefacts -tzsub "wow!" -e 7
Run Code Online (Sandbox Code Playgroud)