cgi und html - absoluter noob

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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"
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
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
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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"

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten