Dies ist eine alte Version des Dokuments!
Auswertung von Formularen mit CGI
Mit Hilfe von CGI lassen sich auch Webformulare auswerten. Das Formular kann dabei direkt in einer HTML-Datei stehen, es kann aber auch mit Hilfe einer Pythondatei durch CGI erzeugt werden. Dazu als erstes ein einfaches Beispiel:
Zunächst erstellen wir in unserem Webserver-Verzeichnis die folgende HTML-Datei mit einem Formular:
- formular.html
<!DOCTYPE html> <html lang="de"> <head> <meta charset="utf-8"> <title>Python - CGI-Programmierung</title> </head> <body> <form method='post' action='cgi-bin/script03_auswertung.py'> <p>Name: <input type='text' name='name' /></p> <p>Alter: <input type='text' name='alter' /></p> <input type='checkbox' name='happy' /> Happy <input type='checkbox' name='sad' /> Sad <input type='submit' name='submit' value='Submit' /> </form> </body> </html>
Neu ist das Attribut action
im <form>
-Tag. Es verweist auf das Script script03_auswertung.py, welches sich im Ordner cgi-bin befindet. Die Formulardaten werden nun als Werte von Variablen an dieses Script übermittelt. Das Script ist wie folgt aufgebaut:
- script03_auswertung.html
#!/usr/bin/env python3 import cgi header = ''' <!DOCTYPE html> <html lang="de"> <head> <meta charset="utf-8"> <title>Python - CGI-Programmierung</title> </head> <body> ''' footer = ''' </body> </html> ''' form = cgi.FieldStorage() print(header) if form.getvalue("name"): name = form.getvalue("name") print("<h1>Hello " +name+"! Thanks for using my script!</h1><br />") if form.getvalue("alter"): alter = int(form.getvalue("alter")) print("<p>In ten years, you will be",alter+10,"years old.</p>") if form.getvalue("happy"): print("<p> Yayy! I'm happy too! </p>") if form.getvalue("sad"): print("<p> Oh no! Why are you sad? </p>") print(footer)
Im Auswertungsscript wird nun eine Webseite erzeugt, die die Formulardaten auswertet. Der wichtigste Befehl zum Auswerten des Formulars ist das Importieren der CGI-Bibliothek import cgi
Anschließend werden der Kopf- und der Fußquelltext der Seite als Variablen angelegt.
Danach wird mit dem Befehl form = cgi.FieldStorage()
aus der Bibliothek cgi
der Inhalt des Formulars in deer Variable form
gespeichert.
Nun wird mit mehreren print