Werte mit Formular an Python übergeben

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hallo,

    kann mir jemand sagen, wie ich über ein HTML Formular (oder auch anders, brauche nur die Eingabe vom user) einem laufenden Python Script Werte übergeben kann? Dass ich z.B. die Temperatur bei der der Lüfter anspringen soll über den Webserver ändern kann. Den Weg Formular -> PHP -> Python habe ich mit sys.argv probiert, aber daran bin ich bereits gescheitert. Geht das so überhaupt?

    Einmal editiert, zuletzt von kes (25. März 2015 um 22:35)


  • Der einfachste Weg ist in der IMHO der Einsatz eines Webframeworks wie Bottle, bei dem du z.B. einen GET-Request sendest, der die Temperatur übergibt.

    Wenn du ein Beispiel brauchst einfach kurz nochmal hier melden :)

    Gruß, noisefloor

    Danke erstmal an alle, ich werde mich dann mal mit Bottle beschäftigen und wenn ich nicht weiter komme, würde ich gerne auf dein Angebot zurück kommen. :thumbs1:

  • Na ja, das kommt auf die Webanwendung an.
    Wenn ich eine große Webseite habe welche eh PHP nutzt und ich nur einen kleinen Wert via Python ändern will ist ein Framework wie Bottle oder Flask suboptimal.

    Habe ich eine Webgui für nur den einen Wert dann sieht das ganz anders aus.

    Also immer Vorsicht mit Aussagen wie :

    Zitat

    der Weg

    > Formular -> PHP -> Python

    ist viiiiiiiiiiiiiiel zu kompliziert.

    Meine Webseite besteht aus hunderten PHP Files.
    Die alle nach Flask oder Bottle zu portieren um EINEN Ausgang zu schalten

    Zitat

    ist viiiiiiiiiiiiiiel zu kompliziert.

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

  • Ich habe für meinen Keller ein Python Script das mit Hilfe zweier DHT22 den Taupunkt berechnet und dann zwei Lüfter steuert.

    Zitat

    Na ja, das kommt auf die Webanwendung an.
    Wenn ich eine große Webseite habe welche eh PHP nutzt und ich nur einen kleinen Wert via Python ändern will ist ein Framework wie Bottle oder Flask suboptimal.

    Werte wie Taupunkt, Temperatur und Luftfeuchtigkeit bei denen die Lüfter anspringen möchte ich per Webinterface übergeben können. Ob das nicht overkill ist für so ein kleines Script ist erst mal egal, es geht mir hauptsächlich ums probieren und lernen (falls mir da jemand noch Material zum lesen geben kann, immer her damit).

    Auf dem Webserver (apache) ist sonst nur eine grafische Auswertung der Temperatur und Luftfeuchtigkeit sowie ein Textfile mit den letzten x Werten

    Script kann ich nacher editieren, bin gerade nicht Zuhause.

    Einmal editiert, zuletzt von kes (26. März 2015 um 14:32)

  • Hallo,

    Der_Imperator: Natürlich kannst du alle deine Webseiten portieren, wenn du totale Langeweile hast ;) - aber nötig ist das ganz sicher nicht, nur weil du z.B. Bottle einsetzt (abgeshen davon würde ich dir dann wohl eher zu Django raten ;)

    Das kann paralell auf irgendeinem Port laufen, ohne im PHP & Apache (oder was auch immer) zu interferieren.

    Der Vorteil von Pythons WSGI ist ja, dass du eine URL eine Funktion binden kannst. D.h. du brauchst kein Formular, keine GT-Parameter, keine POST-Daten etc - der Aufruf der URL reicht.
    Vielleicht geht das auch mit PHP? - da kenne ich mich nicht aus...

    Mit Bottle sieht das ganze so aus:

    Der Aufruf von `http://localhost:8080/setze_temperatr/27.8` würde dann die Temperatur auf 27,8 Grad setzen.

    Gruß, noisefloor

    Einmal editiert, zuletzt von noisefloor (26. März 2015 um 14:34)

  • Also ich fahr eigentlich ganz gut mit Sockets..

    Im Python Script läuft ein Thread welcher auf WebSocket-Verbindungen mithilfe von tornado lauscht (Thread deshalb weil sonst beim Trennen der Verbindung keine weitere Verbindung mehr möglich wäre) und die Webseite verbindet sich bei bedarf über Javascript's WebSocket.
    Vorteil hierbei ist halt das die Webseite nicht jedes mal neu laden muss sofern man ein (oder mehrere) Befehle via Socket absetzt - Ein Button brauch dann nur das OnClick Event.

    Aber wie immer gibt es unzähliche Möglichkeiten :fies:


    //EDIT: Mein Web Part siehe > hier < und meine (alten) Python Scripts siehe > hier <

    Weiteres zu diesem Thema auch > hier < oder Forumsuche nach ' websocket '


  • Der Vorteil von Pythons WSGI ist ja, dass du eine URL eine Funktion binden kannst. D.h. du brauchst kein Formular, keine GT-Parameter, keine POST-Daten etc - der Aufruf der URL reicht.
    Vielleicht geht das auch mit PHP? - da kenne ich mich nicht aus...

    Man kann es sich sicherlich mit einem Apache Server und irgendwelchen htaccess rewrite Regeln so umbiegen, dass es passt. Aber man kann es auch lassen und was sinnvolles benutzen wie Django/Flask/Bottle unter Python oder Dropwizard unter Java,... :P

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!