Python werte in html datei anzeigen

  • Hallo zusammen,

    Wie ich in der Überschrift schon beschrieben habe möchte ich einen Wert den mir ein Python script liefert in einer html datei wiedergeben. Die mir anschließend den Wert in einem Browserfenster darstellt.

    Ich habe mich in den letzten Tagen intensiv mit der Problematik beschäftigt und mittlerweile läuft auf meinem Raspberry Pi ein Apache2 Webserver der mir die html datei bereits anzeigt nur leider eben ohne den wert von Python :(

    das Python Programm, dass mir den abstand mittels ultraschall ausliest, läuft auch ohne Probleme nur bekomme ich es einfach nicht hin dass ich den Wert auf meinem server angezeigt bekomme:wallbash::wallbash:

    Hat villeicht jemand einen tipp für mich wie ich das Problem lösen kann?

    LG Chris

  • Hallo,

    ja: du baust den Python-Wert in eine HTML-Datei ein, die du wiederum mittels einer Python Template-Engine baust. Klingt kompliziert, ist es aber nicht. Apache brauchst du eigentlich nicht, da du die dynamisch generiere Webseite besser / einfacher über ein Python WSGI Webframework wie Bottle oder Flask ausliefern lässt, die auch einen Template-Engine an Bord haben. Und falls die Seite viel Traffic hat, setzt du Gunicorn als WSGI-Applikationsserver und nginx als Reverse-Proxy davor. Klingt vielleicht auch kompliziert, ist aber im Setup IMHO einfacher als Apache + mod_wsgi.

    Simples Beispiel mit Flask, bei dem bei jedem Aufruf eine Zufallszahl eingebaut wird:

    Anmerkung: Wenn du das mit Flask umsetzen willst und deine Webseite über die Trivialität des Beispiels hier hinaus geht, dann lagere deine Templates in separate Dateien aus und nutze `render_template` statt `render_template_string`.

    Gruß, noisefloor

  • Klingt ein wenig kompliziert :denker:

    Ok ich bin völliger Neuling was html angeht muss ich dort nur den die variable random number eingeben und davor in Python deklarieren?

    Was bewirkt die Zeile @app.route(´/`) ???

    Radint(0, 10) beschreibt eine Zufallszahlen von 0-10 oder? Ich bin leider in Python auch nicht der PRO:conf:

    Den text was du in tmplt geschrieben hast ist mein html Dokument oder? Oder muss ich dass in Python auch angeben?

  • Hallo,

    Zitat

    Ok ich bin völliger Neuling was html angeht muss ich dort nur den die variable random number eingeben und davor in Python deklarieren?

    `random_number` ist hier nur das Beispiel. Das kann ein X-beliebiger Wert sein, wie der ausgelesene Wert deines Sensors.

    Wenn du eine Webseite ausgeben willst, solltest du schon HTML können... Ohne geht's nun mal nicht ;)

    Zitat

    Radint(0, 10) beschreibt eine Zufallszahlen von 0-10 oder? Ich bin leider in Python auch nicht der PRO

    Genau.

    Zitat

    Was bewirkt die Zeile @app.route(´/`) ???

    RTFM :) -> Du musst schon ein bisschen in der Doku von Flask lesen, wenn du wirklich verstehen willst, was da passiert. Sonst kannst du Flask später auch nicht einsetzen.

    Zitat

    Den text was du in tmplt geschrieben hast ist mein html Dokument oder? Oder muss ich dass in Python auch angeben?

    Ja, das ist gültiges HTML, welches als String an die Variable `tmplt` gebunden ist. `render_template_string` wirft die in Flask enthaltene Template-Engine an, ersetzt den Platzhalter `{{ random_number }}` mit dem generierten Wert und liefert das HTML-Dokument dann über den Webserver von Flask aus.

    Klingt alles kompliziert - ist es aber nicht. Da ist der Standardweg. Funktioniert mit anderen WSGI-Webframeworks wie Bottle, Django, Tornado, Sanic etc. grundsätzlich genau so.

    Gruß, noisefloor

  • `random_number` ist hier nur das Beispiel. Das kann ein X-beliebiger Wert sein, wie der ausgelesene Wert deines Sensors.


    Wenn du eine Webseite ausgeben willst, solltest du schon HTML können... Ohne geht's nun mal nicht ;)

    ok hab ich verstanden :)

    Ich versuche es zu lernen hab am wochenende schon meine eigene Webseite geschrieben kann dabei die Tutorials von techPunkt nur empfehlen:)

    10 Folgen auf 2 Tage:angel::bravo2::D

    RTFM :) -> Du musst schon ein bisschen in der Doku von Flask lesen, wenn du wirklich verstehen willst, was da passiert. Sonst kannst du Flask später auch nicht einsetzen.

    Werd ich die nächsten Tage definitiv machen

    Danke für die Tipps ich werd mich in den nächsten tagen wieder meinem py widmen solane es meine zeit zulässt Weihnachtszeit ist immer ein wenig Stressig:)

    LG Chris

  • Hallo,

    Zitat

    Flask hat sicherlich die grössere Fangemeinde als bottle.

    Flask hat definitiv die größere _Nutzergemeinde_ als Bottle. Wenn das Projekt mal "wächst", hat Flask definitiv auch das wesentlich größere Ökosystem an Erweiterungen.

    Bei kleinen Sachen spielt es keine Rolle, ob Bottle oder Flask. Damit das obigen Beispiel mit Bottle läuft, muss man neben der `import` Zeile zwei weitere Zeilen ändern, damit es läuft. Das Prinzip ist aber exakt identisch (weil Flask as seinerzeit im Rahmen des Aprilscherzes von Bottle kopiert hat ;) ).

    Gruß, noisefloor

Jetzt mitmachen!

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