Python-Programmierung: Netz

Aus Wikibooks

Wechseln zu: Navigation, Suche

[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
Persönliche Werkzeuge