Python-Programmierung: CGI-Programmierung
Aus Wikibooks
[Bearbeiten] Was bedeutet CGI?
CGI steht für Common Gateway Interface, also auf deutsch frei übersetzbar mit "Allgemeine Aufruf-Schnittstelle". Das CGI ermöglicht es von außen Programme auf einem entfernten Rechner auszuführen, in der Regel einem Webserver. Diese Programme können in beliebigen Sprachen abgefasst sein - in C, C++, Perl oder eben auch Python. Zu den üblichen Aufgaben eines CGI-Programmes gehören
- die dynamische Generierung von HTML-Seiten
- das Abfragen von Datenbanken
- die Verarbeitung von Formulareingaben
- das Bereitstellen von höheren Diensten, die auf den obigen Punkten basieren (Foren, Chats, Suchmaschinen o.ä.)
[Bearbeiten] Wie ist ein einfaches CGI-Script aufgebaut?
Ein Python-CGI-Script besteht aus zwei Teilen. In der ersten Zeile muss eine Zeile stehen wie diese:
#!/usr/bin/python
Diese Zeile enthält für den Webserver die Information, wo er nach dem Interpreter des Scripts suchen soll. Nach dieser Zeile folgt der Rumpf des Scripts, der das eigentliche Programm enthält. Da die Kommunikation eines CGI-Scripts mit der Außenwelt in der Regel nicht über den Bildschirm, sondern über das HTTP-Protokoll und das Internet geschieht, müssen jedoch auch im Programm selbst einige Dinge beachtet werden. Ein HTTP-Paket besteht (wie das Script) aus zwei Teilen - dem Header und dem Body. Der Header enthält wie beim CGI-Script technische Informationen für den Browser - zum Beispiel die Art des Inhalts. Der Body dagegen enthält die eigentliche Nutzlast des Pakets, bei der Kommunikation über das Internet in der Regel HTML-Code.
[Bearbeiten] "Hallo Welt!" als CGI-Script
#!/usr/bin/python #1 print 'Content-Type: text/html' #2 print #3 print '<html><head><title>Hallo Welt!</title></head><body>' #4 print '<h1>Hallo Welt!</h1></body></html>'
#1 Hier wird der Interpreter des Scripts angegeben. Wenn dieser Pfad bei Ihnen anders sein sollte (zum Beispiel, weil Sie Windows benutzen), müssen Sie ihn anpassen!
#2 Diese Ausgabe gehört zum Header des HTTP-Pakets und spezifiziert den Inhalt, bei uns HTML-codierte Textdaten.
#3 Ein Leerzeile trennt Header und Body des HTTP-Pakets voneinander.
#4 Ab hier machen wir einfache Ausgaben, die wir mit HTML formatieren.