FieldStorage class und items()

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
würmchen
User
Beiträge: 255
Registriert: Mittwoch 7. November 2007, 14:17

Hallo,
hab ein Problem mit der Fieldstorage class. Und zwar hab ich ein Formular in dem manche Felder doppelt vorkommen können. Hier mal ein Beispiel wenn ich ein

Code: Alles auswählen

form = cgi.FieldStorage()
print form
mache
FieldStorage(None, None, [MiniFieldStorage('lig_in_cav', '90'), MiniFieldStorage('cav_in_lig', '90'), MiniFieldStorage('level', '1'), MiniFieldStorage('and_or', 'is'), MiniFieldStorage('mainmenu', 'macromol'), MiniFieldStorage('submenu', 'mol_protein'), MiniFieldStorage('level', '2'), MiniFieldStorage('mainmenu', 'none'), MiniFieldStorage('level', '1'), MiniFieldStorage('and_or', 'and'), MiniFieldStorage('mainmenu', 'none')])
naja, wenn ich jetzt hingehe und versuche meine Formularfelder irgendwie zu ordnen dann würde ich normalerweise dieses FieldStorage mit einer for Schleife durchlaufen und dann jeden einzelnen Eintrag der Reihe nach verarbeiten. Leider funktioniert das nicht, denn wenn ich sowas wie

Code: Alles auswählen

for item in form:
    print item 
mache dann kommt nur das hier raus
lig_in_cav cav_in_lig level and_or mainmenu submenu
dann habe ich in der doku zu fielstorage gesehen das es sowas wie items() gibt, aber dazu muss ich wohl erst ein from mod_python import util machen, und das gibt bei mir eine fehlermeldung das er das _apache modul nicht findet....

Gibt es noch andere Möglichkeiten um an die Datan aus Fieldstorage zu kommen?
Benutzeravatar
helduel
User
Beiträge: 300
Registriert: Montag 23. Juli 2007, 14:05
Wohnort: Laupheim

Moin!
würmchen hat geschrieben:dann habe ich in der doku zu fielstorage gesehen das es sowas wie items() gibt, aber dazu muss ich wohl erst ein from mod_python import util machen, und das gibt bei mir eine fehlermeldung das er das _apache modul nicht findet....
Wenn du kein mod_python benutzt, dann brauchst du auch nicht in deren Doku zu schauen ;-)
Gibt es noch andere Möglichkeiten um an die Datan aus Fieldstorage zu kommen?
Das FieldStorage im cgi-Modul besitzt offensichtlich keine items-Methode, aber du könntest z.B. sowas machen (ungetestet):

Code: Alles auswählen

for key in fieldstorage:
    value = fieldstorage[key]
würmchen
User
Beiträge: 255
Registriert: Mittwoch 7. November 2007, 14:17

Problem was ich bei deiner Methode habe ist, das die Reihenfolge der Felder Verloren geht. Das darf es aber auf keinen Fall...

Was ich brauche ist eigentlich nur über die Elemente zu iterieren... Deshalb dachte ich an eine for schleife wie

Code: Alles auswählen

for (i = 0; i <= len(form); i++):
Aber das geht nicht
Benutzeravatar
helduel
User
Beiträge: 300
Registriert: Montag 23. Juli 2007, 14:05
Wohnort: Laupheim

würmchen hat geschrieben:Problem was ich bei deiner Methode habe ist, das die Reihenfolge der Felder Verloren geht. Das darf es aber auf keinen Fall...
Ah, ok. Jetzt seh ich erst, dass bei dir Feldnamen auch mehrfach vorkommen können:

Code: Alles auswählen

for item in fieldstorage.list:
    print item
Antworten