======CGI in Python====== =====Was ist CGI?===== Das Common Gateway Interface (**CGI**) ist eine Schnittstelle von Webservern, über die Datenaustausch mit externen Anwendungen möglich ist. Die Webseiten müssen nicht vollständig auf den Server liegen, sie werden von Programmen dynamisch erzeugt. Die Programme liegen dazu in einem Extra-Verzeichnis des Webservers (z.B. cgi-bin). Früher wurde für CGI-Scripte meist Perl oder C verwendet. Python wird auch in CGI-Scripten, meist innerhalb von Webframeworks, wie Django oder Flask verwendet. =====CGI und Python===== Auch mit Python lassen sich CGI-Scripte erzeugen. Dafür muss eine **ausführbare** Python-Datei erzeugt werden, die HTML-Quelltext erzeugt. Unter Windows 10 und 11 lässt sich eine Python-Datei einfach durch Doppelklick ausführen, unter anderen Betriebssystemen ist dazu eine sogenannte ''%%Shebang%%'' erforderlich, die das nötige Programm aufruft. Außerdem muss die Datei noch ausführbar gemacht werden. Das folgende CGI-Script gibt mit der ''%%print%%''-Anweisung eine einfache Webseite. als mehrzeilige Zeichenkette aus: #!/usr/bin/env python3 print(""" Python-CGI-Programmierung

Hallo Welt, Python CGI!

""")
Das Script muss nun in das cgi-bin Verzeichnis eines Webservers kopiert werden und kann über den Webbrowser aufgerufen werden. Wir wollen dazu den [[python:pythoncgi:webserver|http.server]] von Python verwenden. ====CGI-Script mit dem http.server von Python aufrufen==== Zunächst erzeugen wir ein Verzeichnis ''%%cgi-bin%%'' und kopieren das Script hinein. In unserem Fall wurde das Verzeichnis ''%%cgi-bin%%'' direkt auf dem Laufwerk N: erzeugt. {{ :python:pythoncgi:cgi01.png?direct&600 |}} Anschließend öffnen wir die Powershell und wechseln ins übergeordnete Verzeichnis von ''%%cgi-bin%%'', also in unseren Fall direkt ins Laufwerk N:. Danach starten wir den Webserver mit ''%%python -m http.server --cgi 8888%%'', dabei startet ''%%python -m http.server%%'' den Server, ''%%--cgi%%'' macht den Server CGI-fähig und ''%%8888%%'' gibt den Port an, auf dem der Server läuft. {{ :python:pythoncgi:cgi02.png?direct&600 |}} Jetzt können wir unser Script im Webbrowser mit ''%%http://localhost:8888/cgi-bin/script01.py%%'' aufrufen. Dabei ist ''%%http://localhost:8888%%'' der lokale Webserver auf dem Port ''%%8888%%'', ''%%/cgi-bin/%%'' das Verzeichnis, in dem das Script liegt und ''%%script01.py%%'' der Name des Scripts. {{ :python:pythoncgi:cgi03.png?direct&600 |}} **Erklärvideo** {{youtube>e_tVge5_1Ek}} \\ **Aufgabe 1** Teste das Script! ====Ein komplexeres Beispiel==== Im folgenden Beispiel werden nun einige weitere Pythonfunktionen verwendet: #!/usr/bin/env python3 from datetime import date today = date.today() header = ''' Python - CGI-Programmierung ''' footer = ''' ''' print(header) print("

Datumscript

") print("

Heute ist der ",today,"!

",sep='') print(footer)
* Mit der Zeile ''%%from datetime import date%%'' wird die Python-Datumsbibliothek importiert und mit ''%%today = date.today()%%'' wird das aktuelle Datum in die Variable ''%%today%%'' geschrieben. * Der Kopf- und Fußbereich der HTML-Seite wird in die Variablen ''%%header%%'' und ''%%footer%%'' geschrieben. Diese können dann mit ''%%print%%'' ausgegeben werden. * Nun werden die einzelnen HTML-Elemente ausgegeben: * ''%%print(header)%%'' der Kopfbereich der Webseite * ''%%print("

Datumscript

")%%'' die Überschrift * ''%%print("

Heute ist der ",today,"!

",sep='')%%'' das aktuelle Datum * ''%%print(footer)%%'' der Fußbereich der Webseite **Aufgabe 2** Teste das Script! **Aufgabe 3** Erweitere das Script, so dass auch noch die Uhrzeit ausgegeben wird!