Seite 1 von 1

cgi und html - absoluter noob

Verfasst: Donnerstag 6. Oktober 2005, 16:29
von julian
hallo,
hab genau das umgekehrte problem, brauche einen fehlercatch wenn z.b. das feld was aufm webserver in html auf cgi übergebn wird leer ist !!! also das progr. soll abbrechen und in html eine fehlermeldung ausgeben:

Code: Alles auswählen

#Checkfunktion - allgemein
def chk(element):
	if dict.has_key(element):
		erg = dict[element][0]
	else:
		erg = "Falsche Eingabe"
	return erg

import cgi, sys
form = cgi.FieldStorage()
dict = cgi.parse(form)
bin grad im praktikum und hab von python keinen plan hatte bisher nur java ....
wäre net wenn einer ein try catch oder ähnliches posten könnte

many thx julian

Edit (Leonidas): Code in Python-Tags gesetzt.

Verfasst: Donnerstag 6. Oktober 2005, 18:55
von Leonidas
Hallo, willkommen im Forum!

Erstzens: gratiliere zur Wahl von Python :)

Am besten du setzt das import cgi ganz oben ins Script rein, darunter noch ein import cgitb und ein cgitb.enable(): so siehst du die Tracebacks, die dein Programm generiert.

Auf eine Ausnahme kann man so reagieren:

Code: Alles auswählen

try:
    # generiert Ausnahme, da leere Liste kein 0-Element hat
    print [][0]
except IndexError:
    print "Ausnahme gefangen"

Re: leonidas

Verfasst: Freitag 7. Oktober 2005, 10:20
von julian
hmm,

ja meinte eigentl., dass wenn im html-formular nix eingegeben wird sollte der user zurückgeführt werden - mit entsprechender info (falsche eingabe etc.) - auf die start (eingabe) seite um das formular richtig auszufüllen ... wenn ich ein try catch bzw. try except mache, funtzt das zwar aber im browser wird server error angezeigt, dass will ich nicht.

thx

Verfasst: Freitag 7. Oktober 2005, 12:03
von jens
Der Server error kommt evtl. weil du keinen Header zuerst ausgegeben hast, sondern direkt print FehlerMeldung ?

Du mußt beim CGI immer zuerst den Header ausgeben und dann die eigentliche Seite. Mit Header meine ich sowas wie:

Code: Alles auswählen

print "Content-type: text/html; charset=utf-8\r\n"