Hallo Leute,
ich hab mal eine vieleicht wieder merkwürdige Frage.
Ist es in einem CGI-Script möglich die HTML-Seite zu aktualisieren ohne, daß
der Benutzer immer auf den Reload-Button des Browsers klicken muß?
Ist das mal wieder eine von meinen ungewöhnlichen Anforderungen??
Vieleicht kann mir jemand einen kleinen Codeschnipsel schicken falls dies doch möglich ist.
Danke schon mal.
alpha
Browseranzeige per CGI aktualisieren
Vorweg: Ich habe eigentlich keine konkrete Ahnung davon.
Aber soweit ich weiss kann man vom Server eine Seite auch als "Multipart" senden und so immer aktualisierte Seiten nachschieben. Suchworte für Google wären wohl "CGI server push multipart".
Aber soweit ich weiss kann man vom Server eine Seite auch als "Multipart" senden und so immer aktualisierte Seiten nachschieben. Suchworte für Google wären wohl "CGI server push multipart".
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Jup, dazu brauch man aber kein CGI Script sondern HTML 
<meta http-equiv="refresh" content="SEKUNDEN; URL=URL">
Als Beispiel mal eine Seite sie sich nach 25 Sekunden selbst wieder aufruft: FM4 Listings.

<meta http-equiv="refresh" content="SEKUNDEN; URL=URL">
Als Beispiel mal eine Seite sie sich nach 25 Sekunden selbst wieder aufruft: FM4 Listings.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Danke erst mal für die Antworten. Leider hab ich noch ein Problem. Wenn ich die Zeile
<meta http-equiv="refresh" content="25; URL=stream">
in mein Script
einbinde bekomm ich ne Syntax Fehlermeldung vom Server.
File "/home/alpha/scripts/python/cgi-bin/mycgi.py", line 6
print "<meta http-equiv="refresh" content="25; URL=stream">"
^
SyntaxError: invalid syntax
amd64 - - [08/Feb/2005 23:56:39] CGI script exit status 0x100
Hat vieleicht jemand ne Erklärung dafür???
Danke schonmal für die Mühe.
alpha
<meta http-equiv="refresh" content="25; URL=stream">
in mein Script
Code: Alles auswählen
#!/usr/bin/python
from time import *
print "Content-Type: text/html" # Header
print
print "<html><head><title> CGI-Script </title></head>"
print "<meta http-equiv="refresh" content="25; URL=stream">"
print "<body><h1>Datum und Zeit</h1>"
print "Es ist ", ctime( time() ) + "."
print "</body></html>"
File "/home/alpha/scripts/python/cgi-bin/mycgi.py", line 6
print "<meta http-equiv="refresh" content="25; URL=stream">"
^
SyntaxError: invalid syntax
amd64 - - [08/Feb/2005 23:56:39] CGI script exit status 0x100
Hat vieleicht jemand ne Erklärung dafür???
Danke schonmal für die Mühe.
alpha
Die Anführungszeichen sind falsch. So geht's:
Oder so:
Code: Alles auswählen
print '<meta http-equiv="refresh" content="25; URL=stream">'
Code: Alles auswählen
URL = "test.de"
print '<meta http-equiv="refresh" content="25; URL=%s">' % URL
Benutze mal import cgitb ; cgitb.enable() in deinem Skript, dann siehtst du auch eine richtige Fehlermeldung. s. http://www.python.org/doc/current/lib/module-cgitb.htmlAnonymous hat geschrieben:Die Anführungszeichen sind falsch. So geht's:
Oder so:Code: Alles auswählen
print '<meta http-equiv="refresh" content="25; URL=stream">'
Code: Alles auswählen
URL = "test.de" print '<meta http-equiv="refresh" content="25; URL=%s">' % URL
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Danvon mal abgesehen, dass es nicht stream sondern der Name deines Scriptes sein sollte.. denn mit meta refresh kann man auch auf andere Seiten umleiten.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Nun, sie bewirken auch das gleiche. Man startet/beendet damit Zeichenketten. Schau Dir nochmal den Quelltext hier an, der den Syntaxfehler provoziert. Da wirst Du sehen, das ein " mitten in einer Zeichenkette, die mit " angefangen wurde eben diese Zeichenkette dort beendet! Also kannst Du nur das jeweils andere Zeichen innerhalb einer Zeichenkette verwenden oder musst sie eben mit \ schützen.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Alternativ gibt es auch noch die Trippel Strings, die da etwas robuster sind:
Code: Alles auswählen
a = '''bc'''
b = """bc"""
print a == b
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Wobei diese den großen Vorteil haben, das man damit über eine Zeile hinaus kommt. Leider wird dabei das Einrücken nicht beachtetLeonidas hat geschrieben:Alternativ gibt es auch noch die Trippel Strings

Code: Alles auswählen
def test():
print """Zeile1
Zeile2
Zeile3"""
test()
Code: Alles auswählen
Zeile1
Zeile2
Zeile3
Code: Alles auswählen
def test():
print """Zeile1
Zeile2
Zeile3"""
test()
Code: Alles auswählen
Zeile1
Zeile2
Zeile3