簡體   English   中英

在Django應用中運行python腳本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM