Heim >Backend-Entwicklung >Python-Tutorial >Teilen Sie ein Beispiel-Tutorial zur PythonCGI-Programmierung

Teilen Sie ein Beispiel-Tutorial zur PythonCGI-Programmierung

零下一度
零下一度Original
2017-05-19 13:08:412624Durchsuche

Ich habe in der letzten Woche weiter online Python gelernt und bin mit der CGI-Programmierung in Python in Kontakt gekommen. Die offizielle Definition von CGI lautet wie folgt:

CGI (Common Gateway Interface), ein gemeinsames Gateway Schnittstelle ist ein Programm, das auf dem Server ausgeführt wird, z. B.: HTTP-Server, der eine Schnittstelle zur Client-HTML-Seite bereitstellt.

Mich interessierte mehr, wie leistungsstarke Anwendungen mit Python CGI geschrieben werden können, also begann ich, den Programmierteil von Python direkt zu erlernen. Zuerst musste ich den Webserver so konfigurieren, dass er CGI unterstützt hat Die integrierte Entwicklungsumgebung wamp ist installiert, sodass Apache nicht installiert werden muss. Es gibt viele Blog-Beiträge im Internet über die Konfiguration unter Apache, und sie befinden sich in der Linux-Umgebung, aber ich denke Der Inhalt der Konfigurationsdatei sollte nicht sein. Es wird große Änderungen geben, also habe ich meine Bastelreise begonnen. Es stellt sich heraus, dass die Verwendung von Windows für die Entwicklung wirklich eine Falle ist.

Laut der Online-Lernwebsite Python CGI müssen Sie zuerst das CGI-Verzeichnis einrichten, httpd.conf in der Apache-Konfigurationsdatei ändern

ScriptAlias /cgi-bin/ /var/www/cgi-bin/

und dann Ändern Sie die Datei httpd.conf wie folgt:

<Directory "/var/www/cgi-bin">
   AllowOverride None
   Options +ExecCGI
   Order allow,deny
   Allow from all</Directory>

Fügen Sie dann das Suffix .py in AddHandler hinzu , damit wir auf die Python-Skriptdatei mit der Endung .py zugreifen können:

Nachdem Sie dies alles erledigt haben, starten Sie den Server (Apache/Wamp) neu und schreiben Sie das erste CGI-Programm , der Code lautet wie folgt:

test1.py

#!D:\Python27\python # -*- coding: UTF-8 -*-print "Content-type:text/html\r\n\r\n"print &#39;<html>&#39;print &#39;<head>&#39;print &#39;<title>Hello Word - First CGI Program</title>&#39;print &#39;</head>&#39;print &#39;<body>&#39;print &#39;<h2>Hello Word! This is my first CGI program</h2>&#39;print &#39;</body>&#39;print &#39;</html>&#39;

Der Inhalt der ersten Zeile gibt an den Speicherort des Skriptinterpreters, der anhand von ermittelt werden kann: Ändern Sie den Pfad Ihrer eigenen Installation

und geben Sie in die Adressleiste des Browsers ein: http://localhost/cgi-bin/ test1.py

Dann zeigt der Browserzugriff folgende Ergebnisse an:

Hello Word! This is my first CGI program

Kein Problem

Dann schreiben Sie das zweite Programm:hello_get.py

#!D:\Python27\python# -*- coding: UTF-8 -*-# CGI处理模块import cgi, cgitb 
# 创建 FieldStorage 的实例化form = cgi.FieldStorage() # 获取数据first_name = form.getvalue(&#39;first_name&#39;)last_name  = form.getvalue(&#39;last_name&#39;)print "Content-type:text/html\r\n\r\n"print "<html>"print "<head>"print "<title>Hello - Second CGI Program</title>"print "</head>"print "<body>"print "<h2>Hello %s %s</h2>" % (first_name, last_name)print "</body>"print "</html>"

Geben Sie localhost/cgi-bin/hello_get.py ein? first_name=ZARA&last_name=ALI

im Browser Es wurde jedoch nicht ausgegeben

Hallo ZARA ALI

wie auf der Website angegeben, aber der folgende Fehler ist aufgetreten


Die Konfigurationsumgebung war also dieselbe und die Codes waren genau die gleichen Was war das Problem? Dann habe ich die Apache-CGI-Konfigurationsmethode verwendet, aber alle Konfigurationsmethoden waren die unter Linux, also hatte ich keine andere Wahl, als die CGI-Umgebung neu zu installieren Führen Sie jeden der oben genannten Schritte erneut aus und fügen Sie dann den Code auf der Website hinzu. Kopieren Sie ihn in den Editor und geben Sie ihn erneut in den Browser ein:

http://localhost/cgi-bin/hello_get.py?first_name=ZARA&last_name=ALI

Das Ergebnis ist immer noch die obige Zeichenfolge mit Fehlermeldungen, daher habe ich mir die Eingabeaufforderung genau angesehen. Sie bedeutet ungefähr:

Interner Serverfehler

Der Server ist auf einen internen Fehler gestoßen oder konnte meine Anfrage aufgrund einer Fehlkonfiguration nicht ausführen

Bitte kontaktieren Sie den Serveradministrator per E-Mail, um ihn über diesen Fehler und Ihre Wünsche zu informieren was tun sollte, bevor dieser Fehler auftritt? Ich bin fest davon überzeugt, dass es so ist. Da ich den Server falsch konfiguriert hatte, dachte ich plötzlich, dass das erste Programm test1 korrekt ausgeführt werden konnte, auch wenn ich keine Konfigurationsdateien geändert hatte. Könnte es sein, dass dieser Fehler nichts damit zu tun hatte? Ich versuche also, die Anweisung zur Deklaration des Interpreterpfads in der ersten Zeile von test1 zu entfernen und sie erneut auszuführen. Derselbe Fehler erscheint im Browser

Also ich bin sehr erleichtert, denn das bestätigt meine Vermutung, es hat nichts mit der Konfiguration des Servers zu tun, weil meine Skriptdatei einen Fehler aufweist, sodass der Server nicht auf die Anfrage antworten kann. Wenn dies der Fall ist, ist der Fehler auch bei hello_get.py derselbe. Überprüfen Sie einfach, ob Fehler vorliegen Code.

Hier möchte ich über eine meiner schlechten Angewohnheiten nachdenken: Wenn ich versuche, eine Routine auf der Website auszuführen, drücke ich immer Strg C und dann Strg V Kopieren Sie es und fügen Sie es in Ihren eigenen Editor ein, aber komplexe Programme mit vielen Codeblöcken haben die Folgen dieser Angewohnheit: falsches Einrückungsformat und dann Fehler bei der Ausführung. Dieses Problem ist in Python besonders offensichtlich Sehr strenge Anforderungen an die Einrückung, daher dürfen Sie Python-Programme nicht kopieren und in Ihre eigenen Programme einfügen. Sie müssen Code für Code eingeben, um sicherzustellen, dass die Einrückung unter Ihrer Kontrolle steht.

Wenn ich das sage, haben die Leute den Fehler bereits in meiner

hello_get.py-Datei gesehen – ich habe ihn einfach nicht selbst eingegeben , ich habe schon versucht, online zu kopieren. Der C-Sprachcode wird in VC++6.0 eingefügt. Oberflächlich betrachtet scheint die Syntax völlig korrekt zu sein, aber es gibt immer einen Fehler und die Eingabeaufforderung ist unverständlich. Wenn ich also auf diese Situation stoße, denke ich, dass dies der Fall sein könnte der Grund. Dies weist auch alle darauf hin, dass der Code Buchstabe für Buchstabe selbst in Ihr Programm eingegeben werden muss, da es sonst zu Fehlern kommt, die schwer zu erkennen sind.

Lassen Sie uns abschließend darüber sprechen, wie Sie Wamp (Apache) unter Windows richtig konfigurieren, um CGI-Skripte korrekt auszuführen :

httpd.conf öffnen

Ändern Sie Zeile 371

ScriptAlias /cgi-bin/ "D:/wamp/bin/apache/apache2.4.9/cgi-bin/"前面的#号去掉,就是解除注释,将后面引号里的D:/wamp/bin/apache/apache2.4.9/cgi-bin/改成自己的cgi-bin所在的路径

将387行f1f3f85950947386ceb2305656cc4f44引号里的内容也改成自己的cgi-bin所在的路径

保存之后重启服务器即可

【相关推荐】

1. 详解cgi向文本或者数据库写入数据实例代码

2. 分享在IIS上用CGI方式运行Python脚本的实例教程

3. 使用CGI模块建立简单web页面教程实例

4. 什么是CGI?详细介绍Python CGI编程

5. 详解XML与现代CGI应用程序的示例代码

6. FastCGI 进程意外退出造成500错误

Das obige ist der detaillierte Inhalt vonTeilen Sie ein Beispiel-Tutorial zur PythonCGI-Programmierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn