cgi.Fieldstorage und leere Formularfelder

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
bicpi
User
Beiträge: 23
Registriert: Samstag 28. Mai 2005, 12:35

Hi zusammen,
ich habe ein HTML-Formular mit einigen input-Feldern. Wenn der value eines der Felder ein leerer String ist (also value=""), kommt das Feld im FieldStorage gar nicht an...Das ist in meinen Anwedungen ziemlich problematisch, da ich überprüfen muss, ob das Feld auch da ist (auch wenn es leer sein sollte). So kommt es zum Beispiel zum Fehler, wenn das Formular leer abgeschickt wird oder ein Feld frei gelassen wird. Eine Vorbelegung mit einem Leerzeichen führt zwar in Python zum Erfolg aber das Formular reagiert dann wirklich verwirrend.

Kann ich leere Felder trotzdem irgendwie ankommen lassen im FiledStorage?
Ist die Reaktion Standard, dass die Felder dann gar nicht aufgenommen werden?

Danke für eure Hilfe und viele Grüße,
bicpi

Edit (Leonidas): Verschoben.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:


GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
bicpi
User
Beiträge: 23
Registriert: Samstag 28. Mai 2005, 12:35

keep_blank_values ! Super. Danke.

Kleine Frage am Rande, um nicht einen neuen Thread aufmachen zu müssen:
ich suche ein Äquivalent zur PHP-Funktion "htmlspecialchars()", die Sonderzeichen wie HTML-Code korrekt codiert, also zB aus ä ä macht, Anführungszeichen umwandelt usw.?

Danke nochmal
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Vielleicht hilft dir ja htmlentitydefs.entitydefs... die Funktion htmlspecialchars() kannst du dir damit recht leicht selbst bauen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
bicpi
User
Beiträge: 23
Registriert: Samstag 28. Mai 2005, 12:35

Danke, das schaut schon mal ganz gut aus, aber ich verstehe nicht ganz, wie ich mit dem Dictionary umgehen soll. Gibt es Funktionen die dieses benutzen, oder schreibe ich mir selbst ein? Wie setzte ich an?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ungetestet, aber etwa so:

Code: Alles auswählen

import htmlentitydefs
def htmlspecialchars(chunk):
    for key in htmlentitydefs.entitydefs.keys():
        chunk = chunk.replace(key, htmlentitydefs.entitydefs[key])
    return chunk
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten