[英]Run python scripts from within Django app
我正在幫助構建一個將與voip電話系統接口的Django應用程序,並且他們創建了一些腳本來在執行某項操作(添加,更新,刪除)時執行,以便與電話系統端保持一致。 他們要求我將參數傳遞給類似/var/www/html/om/om_add.sh deviceid filename title
的腳本,他們還提到使用urllib.quote_plus(title)
將標題作為url傳遞。 ,它應該在應用程序中執行每個操作之后發生。 現在,我聽說不建議從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,)
執行shell腳本與django框架無關,它是python的核心python未來。
import os
os.execv('path' , ['arg'])
arg可以是列表或元組,您可以從數據庫或url等傳遞它。
為此,簡單的比賽是擊球手
from subprocess import call
sub = call(['ls' , '-l'])
print(sub)
子包含輸出
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.