html variablen übergeben

Gast #5760664
Lesenswert?
• ▲
▼
Hallo

Ein Python Script übergibt einige Variablen an den Flask Server. Auf der 
index.html werden diese dann wie folgt angezeigt:

<h2>Spannung 1:    {{ tens_a }}V</h2>
<h2>Spannung 2:    {{ tens_b }}V</h2>

Dies funktioniert problemlos.
ich habe auf der index.html nun einen Frame eingebaut:

<iframe src="frame.html"></iframe>

und möchte die beiden Daten in diesem Frame anzeigen lassen. Wenn ich 
nun in der frame.html die beiden obengennaten Zeilen einbaue, werden 
keine Werte angezeigt, da offensichtlich zwischen beiden html keine 
Variablen übertragen werden.
WIe kann ich dies bewerkstelligen?
#5760702
Lesenswert?
• ▲
▼
Rolli schrieb:
> <h2>Spannung 1:    {{ tens_a }}V</h2>
> <h2>Spannung 2:    {{ tens_b }}V</h2>

das ist auch kein (reines) html sondern jinja2 oder twig (die sehen 
praktisch identisch aus) oder sonst etwas in der Richtung; mit Hilfe 
dieser Rendering Engine wird das HTML generiert und ausgeliefert.
Wenn du die zwei Zeilen "einfach so" in eine HTML-Datei schreibst, dann 
wird die nicht durch die Rendering Engine verarbeitet, d.h. der 
"interessante" Teil wird einfach nur als Text interpretiert.

ich verstehe zwar nicht was du genau machen möchtest - wenn du die zwei 
Zeilen im Iframe (pfui teufel) angezeigt haben möchtest, dann musst du 
dafür sorgen, dass der Inhalt des Frames (igitt) ebenfalls gerendert 
wird und nicht als "nacktes" HTML ausgegeben wird.
Bitte frag mich nicht wie das geht - habe mit flask noch nie gearbeitet.

EDITH meint:
warum willst du einen iframe verwenden? bzw. was hast du vor? da gibt es 
sicher bessere Alternativen als einen iframe (iiiihhhh).
Gast #5761967
Lesenswert?
• ▲
▼
Daniel F. schrieb:
> ich verstehe zwar nicht was du genau machen möchtest - wenn du die zwei
> Zeilen im Iframe (pfui teufel)

Das Iframe dient nur, um die Übergabe der Variablen zu testen, das 
Ergebnis sofort einsehen zu können und nicht zwischen verschiedenen 
Seiten hin und herklicken zu müssen

Also so wie ich das nun verstehe, erzeugt Flask die Webseite und bettet 
mittels Jinja2 die Variablen ein. Die Frage ist nun, ob und wie ich die 
Variablen an eine andere htlm übergeben kann, die nicht von Flask 
gerendert wird, bzw. wie ich die Variablen dort verarbeite.
#5762015
Lesenswert?
• ▲
▼
Rolli schrieb:
> Also so wie ich das nun verstehe, erzeugt Flask die Webseite und bettet
> mittels Jinja2 die Variablen ein. Die Frage ist nun, ob und wie ich die
> Variablen an eine andere htlm übergeben kann, die nicht von Flask
> gerendert wird, bzw. wie ich die Variablen dort verarbeite.
Mit Javascript kann du den Inhalt des DOM-Baumes
lesen und verändern. Kannst also beliebige Inhalte
auslesen und weiterverarbeiten.

merciless
Gast #5762315
Lesenswert?
• ▲
▼
Rolli schrieb:
> <iframe src="frame.html"></iframe>
>
> und möchte die beiden Daten in diesem Frame anzeigen lassen. Wenn ich
> nun in der frame.html die beiden obengennaten Zeilen einbaue, werden
> keine Werte angezeigt, da offensichtlich zwischen beiden html keine
> Variablen übertragen werden.

Warum sollte das geschehen? je nach Konfiguration deiner Flask app weiss 
frame.html nichts von den template Variablen oder wird sogar als static 
Kontent ausgeliefert.

als workaround könntest du in dem index.html template ein 
url_for('flaskframe') einbauen und in dem flask endpoint flaskframe den 
iframe mit einen geeigneten template rendern.
#5762555
Lesenswert?
• ▲
▼
Wie schon gesagt macht die Ersetzung der Server, bevor die Seite 
verschickt wird. Damit muss immer die ganze Seite neu geladen werden, um 
die Werte zu aktualisieren (oder der Frame).

Heute mach man das aber ohne Frames und mit JavaScript. Du hast deine 
Hauptseite, die statisch ist und auch so ausgeliefert wird. Dein Server 
hat dann eine Abfrage bei der man die Variablen im JSON Format abfragen 
kann. Ein JavaScript fragt diese dann regelmäßig ab und passt die Seite 
an. Dafür gibt es bestimmt auch Frameworks die das schon können, ich hab 
spontan aber keinen Überblick, welches dafür am besten ist.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren