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:

<!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:

#!/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)