Ich helfe beim Erstellen einer Django-App, die mit einem VoIP-Telefonsystem verbunden ist, und sie haben einige Skripts erstellt, die ausgeführt werden, wenn eine Aktion ausgeführt wird (hinzufügen, aktualisieren, löschen)) um Parität mit der Telefonsystemseite zu haben. Sie haben mich gebeten, die Parameter an das Skript wie folgt zu übergeben /var/www/html/om/om_add.sh deviceid filename title
Sie haben auch erwähnt, den Titel als URL übergeben, mit urllib.quote_plus(title)
Schließlich sollte es auftreten, nachdem jede Aktion in der App ausgeführt wird. Nun habe ich gehört, dass die Ausführung von Shell-Skripten aus einer Django-App nicht empfohlen wird, aber fragen Sie sich, ob das ein anderer Fall ist? Wie ich das auch tun kann, ist der einzige Weg, wie ich diese Parameter weitergeben kann, sie durch eine Sicht zu leiten. Jede Hilfe wird sehr geschätzt!Führen Sie Python-Skripte aus der Django App
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,)
Danke für die Antwort! Die Art und Weise, wie ich versuche, es zu implementieren, mag dumm sein, aber kannst du möglicherweise den Code, den ich oben hinzugefügt habe (in der Erstellungsansicht), überprüfen, insbesondere nach der "else" -Anweisung. Es scheint an meinem Ende korrekt zu funktionieren, aber ich bin mir nicht sicher, wie ich überprüfen kann, ob es tatsächlich funktioniert und das Skript ausführt –