Python goes Web -> von py nach html - frage wie?

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,

    ich habe auf meinem PI ein py script laufen welches mir Sensorwerte ausließt und ggf. per Mail schickt.

    Meine Frage nun: welche ist die einfachste Methode das auf eine Website zu packen, damit ich das per URL aufrufen kann. Mit einfach meine ich was ohne der DB oder so ... hab gerade keine Idee und würde mich über Input freuen.

    Das script ist zusammengeschuster und einfach, die website muss auch nix können, nur einen oder ein paar Werte darstellen.

  • ich bin auch nicht der experte per se. aber ich weiß folgendes:

    mit python kann man in dateien schreiben, diese also manipulieren und natürlich auch dateien erstellen. also warum nicht die werte in eine txt-datei, diese dann auslesen und in eine html-datei schreiben oder besser: die werte gleich in eine html packen - fertisch ...

    --- wer lesen kann, ist klar im Vorteil ---

    --- man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug ---

    --- der Fortschritt der Menschheit ist das Werk der Unzufriedenen ---

    --- Freude entsteht aus Mangel an Information ---

    --- Scheiße ist, wenn der Furz etwas wiegt ---

  • benötigt halt eine db, wenn ich das richtig verstanden habe

    --- wer lesen kann, ist klar im Vorteil ---

    --- man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug ---

    --- der Fortschritt der Menschheit ist das Werk der Unzufriedenen ---

    --- Freude entsteht aus Mangel an Information ---

    --- Scheiße ist, wenn der Furz etwas wiegt ---

  • Eine Datei ist auch nichts anderes als eine Datenbank. Was du wohl eher meinst ist ein datenbankserver. Den musst du auch nicht nehmen, mit dem in Pyhton schon vorhandenen sqlite3 baust du sowas flux und ohne Überbau auf. Der klare Vorteil liegt in der Behandlung konkurrierender Zugriffe unter Vermeidung von datenmüll, weil ein Prozess gerade liest während der andere schreibt.

  • Hallo,

    Zitat

    Meine Frage nun: welche ist die einfachste Methode das auf eine Website zu packen, damit ich das per URL aufrufen kann. Mit einfach meine ich was ohne der DB oder so ... hab gerade keine Idee und würde mich über Input freuen.Indem du ein Webframework wie Flask benutzt, den Sensorwert ausliest und dann von der Template-Engine des Webframeworks die HTML-Seite "on the fly" erstellen und ausliefern lässt. Klingt vielleicht kompliziert, ist es aber nicht. Das sind vielleicht ~15 Zeilen Code.

    Wenn du wirklich nur den Sensorwert sehen willst, kannst du dir das HTML auch klemmen und den Sensorwert als JSON liefern lassen. Das wird dann im Browser so wie z.B. {'mein Sensorwert': 15.6} angezeigt.

    Zum dem Thema findest du hier im Forum und im Web aber auch etliche Beiträge.

    Gruß, noisefloor

  • Hallo,

    Linus : https://www.jetbrains.com/lp/python-developers-survey-2019/ , auf der Seite nach "Frameworks and Libraries" suchen. Keine Ahnung, wie repräsentativ die Umfrage ist, aber Sanic kommt da gar nicht vor ;)

    Erstaunlich finde ich da die Lücke zwischen Platz 1+2 und Platz 3ff.

    Und webpy kommt da auch gar nicht drin vor... Da wissen wir gar nicht, was mehr Nische ist - webpy oder Sanic *SCNR*

    Gruß, noisefloor

  • als kleines Update, ein kurzer 9-Zeiler, erweitert aus der Demo, offeriert das gewünschte Ergebnis:

    Einmal editiert, zuletzt von botswanabub (7. Juni 2020 um 14:00) aus folgendem Grund: siehe comment darunter ...

  • Naja, das berechnet die ja nur einmal. Das muss schon IN die Funktion.

  • Hallo Tell,

    ich habe deine Anleitung ausprobiert. Die funktioniert bei mir auf einem Pi Zero auf Anhieb :) Einen Verbesserungsvorschlag habe ich noch. Du könntest vor dem jeweiligen Quelltext noch die Dateinamen und Pfade konkreter ergänzen. Es steht zwar dahinter, dass "flask erwartet dieses File in ./templates", aber nicht dass die Datei "index.html" heißt. Der Name wird erst aus der flask-Applikation heraus deutlich. Auch der Dateiname der ausführbaren Anwendung "app.py" wird erst im Nachhinein beim Starten der Anwendung ersichtlich.

    Viele Grüße,

    Tigerbeere

  • Hallo,

    botswanabub : direkt angewöhnen, ein Instanz von Bottle namens `app` anzulegen. Das erzwingt Bottle zwar nicht (Flask schon), aber das `app` Objekt brauchst du, wenn du deine Applikation über einen WSGI-Server auslieferst. Und da bist du relativ schnell, wenn du deine App produktiv nutzen möchtest.

    Strings stückelt man nicht mit + zusammen, sondern mit der format-Methode oder f-Strings. Bei einer Webapplikation solltest du aber sowie so besser JSON zurückliefern, nicht einen platten Text.

    Gruß, noisefloor

Jetzt mitmachen!

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