Nach der modifizierten inspectdb möchte ich es ausführen, wenn die Indexseite im Web geladen ist. Also, meiner view.py - def Index, versuche ich bin die nächste zu tun:Wie zum Ausführen von externen Befehl (Django) zum Überschreiben von Dateien im Server?
def index(request):
subprocess.Popen("rm /path/app/models.py", shell=True)
subprocess.Popen("python2.7 /path/manage.py inspectdb_New > /path/app/models.py", shell=True)
return render_to_response('index/index.html', context_instance = RequestContext(request))
, die nicht funktioniert. Ich habe es mit os.system, subprocess.call versucht, aber es funktioniert immer noch nicht. Für mich sieht zumindest aus, als ob ich models.py in der Ausführungszeit nicht ändern kann, aber ich weiß nicht, was das Problem sein könnte ...
Irgendwelche Idee Leute?
Danke.
Ich bin mir nicht wirklich sicher. Ich denke Server ist Beratungsmodell jede kurze Zeit. Ich versuche jetzt: subprocess.Popen ("python2.7/Pfad/manage.py inspectdb> /path/app/models1.py", Shell = True) subprocess.Popen ("mv/Pfad/models1. py /path/models.py ", shell = True) Und das funktioniert manchmal. Ich nehme an, wenn der Server Modelle konsultiert und der externe Befehl gleichzeitig übersteuert, stürzt das Web ab, und die Modelle enden leer, aber zu einem anderen Zeitpunkt funktioniert es wieder (wenn die Überbewertung nicht mit der Serverberatung übereinstimmt) ... –
Nein Modelle werden nur beim Start geladen. Vielleicht erklärst du, was du erreichen willst. Es gibt wahrscheinlich eine bessere/einfachere Lösung. – ilse2005
Nun, ich möchte Modelle jedes Mal aktualisieren, wenn jemand ddbb ändert (Löschen, Hinzufügen, Ändern von Tabellen, ...) und diese Änderungen werden im Web widergespiegelt (Web wird immer gestartet) –