Python-Programmierung: Netz
Aus Wikibooks
[Bearbeiten] CGI mit Python
Um die Prozedur, Daten z.B. von HTML-Seiten mit Formularen zu empfangen und auszuwerten, zu erleichtern, gibt es das Modul cgi. Die Daten werden vom Webbrowser übers Netz (Internet) zum Webserver geschickt, wo dann das Python-Skript aufgerufen wird. Das Modul wird mit dem Befehl import cgi eingebunden.
Beispiel HTML-Seite mit Formular: http://127.0.0.1/eingabe.html (per Webbrowser aufrufen)
<HTML><HEAD><TITLE>CGI mit Python</TITLE></HEAD><BODY>
<FORM method="get" action="http://127.0.0.1/cgi-bin/ausgabe.py">
Benutzer: <INPUT type="text" name="Benutzer"><br>
Kennwort: <INPUT type="text" name="Kennwort"><br>
<INPUT type="submit" value="Absenden" name="Send">
</FORM>
</BODY></HTML>
Beispiel Python-Skript: http://127.0.0.1/cgi-bin/ausgabe.py Mit "Content-Type: text/html\n" wird dem Client mitgeteilt, dass die Daten im HTML-Format gesendet werden.
#!/usr/bin/python import cgi form=cgi.FieldStorage() print "Content-Type: text/html\n" if form.has_key("Benutzer"): print form["Benutzer"].value
Mit form=cgi.FieldStorage werden alle empfangenen Daten in das Dictionary form geschrieben. Dementsprechend werden die Daten abgefragt und aufgerufen.
test gibt eine Übersicht mit allen empfangenen Daten im HTML-Format zurück.
#!/usr/bin/python import cgi cgi.test()
Die Funktionen print_arguments, print_directory, print_environ, print_environ_usage, print_exception und print_form geben eine Übersicht mit bestimmten empfangenen Daten im HTML-Format zurück.
#!/usr/bin/python import cgi print "Content-Type: text/html\n" cgi.print_directory()
Um die Fehlermeldung auf dem Webbrowser zu sehen, gibt es das Modul cgitb. Sie müssen nur das Modul cgitb importieren und die Zeile cgitb.enable() hinzufügen.
#!/usr/bin/python import cgitb; cgitb.enable() import cgi form=cgi.FieldStorage()
Beispiel: Ein- und Ausgabe in einem Skript. http://127.0.0.1./cgi-bin/ausgabe.py
#!/usr/bin/python import cgitb; cgitb.enable() import cgi form=cgi.FieldStorage() print "Content-Type: text/html\n" print "<HTML><HEAD><TITLE>CGI mit Python</TITLE></HEAD><BODY>" if form.has_key("Send"): if form.has_key("Benutzer"): print form["Benutzer"].value if form.has_key("Kennwort"): print form["Kennwort"].value else: print '<FORM method="get" action="ausgabe.py">' print 'Benutzer: <INPUT type="text" name="Benutzer"><br>' print 'Kennwort: <INPUT type="text" name="Kennwort"><br>' print '<INPUT type="submit" value="Absenden" name="Send">' print '</FORM>' print "</BODY></HTML>"
<< Inhaltsverzeichnis