Erstellen Sie einen einfachen lokalen HTTP-Server mit CGI in Python.
Ich habe versucht, ein CGI-Skript in Python anstelle von Perl zu schreiben, wenn es einfach war.
- CGI ist eine Abkürzung für Common Gateway Interface, eine Funktion zum Anzeigen des Ergebnisses der programmgesteuerten Verarbeitung auf einem Webserver. * *
(Zitiert aus Was ist CGI)
Kurz gesagt, ich denke, dass es eine Funktion ist, die einen Wert von einem Browser übernehmen, auf der Serverseite verarbeiten und erneut zurückgeben kann, um eine dynamische Webseite zu erstellen.
Zunächst müssen wir einen Server einrichten, damit wir lokal einen HTTP-Server einrichten und die Webseite anzeigen können.
Schreiben Sie Index.html in das Verzeichnis, mit dem Sie arbeiten möchten, um die Seite zu erstellen, die Sie anzeigen möchten. Diesmal sind die zu sendenden Daten Lebensmittel und Jahreszeit.
index.html
<html>
<head>
<title>Servertest</title>
<meta http-equiv="content-type" charset="utf-8">
</head>
<body>
<form action="/cgi-bin/cgi_test.py" method="POST">
<div>
<label for="name">Lieblingsessen</label>
<input type="text" name="food" value="Apfel">
<label for="season">Lieblingsjahreszeit</label>
<input type="text" name="season" value="Winter">
<button>Senden</button>
</div>
</form>
</body>
</html>
Was Sie hier beachten müssen, ist der Weg der Aktion
"/cgi-bin/Name der CGI-Skriptdatei"
Ist zu sein. Dies ist der relative Pfad zur CGI-Skriptdatei. Sie erstellen später eine Skriptdatei unter Verwendung des hier angegebenen Skriptdateinamens.
Versuchen Sie einmal, den Server zu starten. Starten Sie es im Terminal.
$ python3 -m http.server 8080
Bei der Ausführung sieht es wie folgt aus. Ich habe vorerst 8080 verwendet, aber jede andere Nummer ist in Ordnung, solange sie verwendet werden kann.
Serving HTTP on 0.0.0.0 port 8080 (http://0.0.0.0:8080/) ...
Überprüfen Sie nun, ob es funktioniert. http://localhost:8080/ Wenn alles gut geht, sieht es so aus: Übrigens, auch wenn Sie die Senden-Taste drücken, sollte immer noch eine Fehlermeldung angezeigt werden.
Schreiben wir nun das CGI-Skript in Python. Erstellen Sie im Arbeitsverzeichnis (dem Verzeichnis, in dem sich index.html befindet) ein Verzeichnis mit dem Namen cgi-bin und schreiben Sie das CGI-Skript hinein. Die Dateistruktur sieht so aus.
.
├── cgi-bin
│ └── cgi_test.py
└── index.html
Verwenden Sie hier auch den in index.html angegebenen Namen für den Dateinamen.
cgi_test.py
#!/usr/bin/env python
import cgi
import cgitb
cgitb.enable()
print("Content-Type: text/html; charset=utf-8\n\n")
print("<html><body>")
form = cgi.FieldStorage()
for key in form:
value = form[key].value
print('<p>%s: %s</p>' % (key, value))
print("</body></html>")
Stellen Sie sicher, dass Sie hier #! / Usr / bin / env python
in die erste Zeile schreiben.
Wenn Sie dies nicht schreiben, wird der Fehler "Betriebssystemfehler: [Errno 8] Exec-Formatfehler:" angezeigt.
Dies gibt einen Dolmetscher an. Weitere Informationen finden Sie in den folgenden Artikeln.
#! / Bin / sh ist nicht nur ein Kommentar! Shebang! (Qiita)
Machen wir das.
Starten Sie den Server wie zuvor im Terminal.
Fügen Sie nun die Option --cgi
hinzu, um CGI auszuführen.
python3 -m http.server 8080 --cgi
Nachdem Sie den Start unter http: // localhost: 8080 / bestätigt haben, drücken Sie diesmal zur Bestätigung auf Senden. Wenn es angezeigt werden kann, ist es erfolgreich.
Wenn es beim Drücken der Senden-Taste nicht angezeigt wird, überprüfen Sie zuerst das Terminal, um festzustellen, welche Art von Fehler auftritt.
code 403, message CGI script is not executable
→ Geben Sie chmod 755 CGI script name.py
in das Terminal im Verzeichnis cgi-bin ein.
SyntaxError: Non-ASCII character '\xe5'
→ Fügen Sie oben in der Datei # encoding: utf-8
hinzu.
Erstellen Sie einen komfortablen Webserver mit Python und testen Sie CGI. (Qiita)