Hi. Also mal ganz von vorne. mit cgi.FieldStorage() wir eine Instanz der Klasse FieldStorage erzeugt, die alle Werte die durch irgendeine Methode an ein CGI-Script übergeben wurden einsammelt. Diese Klasse lässt sich ganz recht wie ein Dictionary handhaben, aber so einfach kommt man nicht an die Werte heran.
So musst du stattdessen puffer["wert"].value ansetzen um an dein "Hallo" zu kommen. Das kommt daher, dass puffer["wert"] wiederum eine Unterinstanz von FielStorage ist (alle Werte werden rekursiv eingesammelt). So sieht das etwas komisch aus, ist aber z.B. für Dateiuploads notwendig. So ist dann z.B. in puffer["datei"].value der Dateiinhalt gespeichert, während alle anderen Daten wie Dateiname, etc durch die Unterinstanz näher beschrieben sind. Sieh dir dazu mal den unteren Teil in der
Docu hier an.
Willst du stattdessen nur schnell den wert eines Feldes haben, weil du weißt, dass dies kein Dateifeld ist geht das auch:
Code: Alles auswählen
value=puffer.getvalue("wert","Alternativwert_falls_wert_nicht_existiert")
Dazu ist aber auch wieder etwas zu sagen: es ist bei HTML ja möglich, dass mehrere Felder denselben Namen tragen (z.B. bei mehreren Checkbuttons). In diesem Fall liefert getvalue eine Liste, statt eines einzelnen Wertes. Dies kann unerwünscht sein, weil man nicht weiß ob man nun eine Liste oder nur einen Wert erhält. Aus diesen Grund gibt es noch zwei weitere Methoden: getfirst und getlist. getfirst liefert nur den ersten Wert (nützlich, wenn man wirklich nur einen Wert will) und getlist liefert in jedem Fall immer eine Liste.
Um also auf dein Beispiel zurück zukommen, musst du etwas in der Art hier anstellen:
Code: Alles auswählen
puffer=cgi.FieldStorage()
v=puffer.getfirst("wert")
if v == "hallo":
print "hallo ist der wert"
elif v == "welt":
print "die welt grüßt dich"
else:
print "fehler im script"
Milan