cgi und html - absoluter noob

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
julian

Donnerstag 6. Oktober 2005, 16:29

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
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 6. Oktober 2005, 18:55

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 Modvoice
julian

Freitag 7. Oktober 2005, 10:20

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
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Freitag 7. Oktober 2005, 12:03

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"

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten