【发布时间】:2017-12-06 22:04:00
【问题描述】:
我正在帮助构建一个与 voip 电话系统交互的 Django 应用程序,他们创建了一些脚本以在执行操作(添加、更新、删除)时执行,以便与电话保持一致系统端。他们要求我像这样将参数传递给脚本
/var/www/html/om/om_add.sh deviceid filename title
他们还提到将标题作为 url 传递,使用 urllib.quote_plus(title)
最后,它应该在应用程序中执行每个操作之后发生。
现在,我听说不建议从 Django 应用程序执行 shell 脚本,但想知道这是不是另一种情况?另外,我如何才能做到这一点,我知道如何传递这些参数的唯一方法是将它们传递给视图。非常感谢任何帮助!
def post_create(request):
device = request.session['device']
if device == 'dummy':
return render(request,'access_denied.html')
did = {'device_id': device }
form= PostForm(request.POST or None, request.FILES or None,initial=did)
if form.is_valid():
instance = form.save(commit=False)
check = Sounds.objects.all().filter(device_id= device).filter(target=instance.target).exclude(target='generic').first()
if check:
instance.pk = check.pk
instance.device_id= device
instance.save()
return HttpResponseRedirect('/')
else:
instance.device_id = device
instance.save()
dev = instance.device_id
name = instance.sound.name
title = urllib.quote_plus(instance.title)
os.execv('/var/www/html/ogm/ogm_add.sh', [dev,name,title])
return HttpResponseRedirect('/')
context= {
'form': form,
}
return render(request, 'post_form.html',context,)
【问题讨论】: