Maison >développement back-end >Tutoriel Python >Partager un exemple de tutoriel de programmation PythonCGI

Partager un exemple de tutoriel de programmation PythonCGI

零下一度
零下一度original
2017-05-19 13:08:412601parcourir

J'ai continué à apprendre Python en ligne la semaine dernière et je suis entré en contact avec la programmation CGI en Python. La définition officielle de CGI est la suivante :

CGI (Common Gateway Interface), une passerelle commune. interface, est un programme qui s'exécute sur le serveur, tel que : Le serveur HTTP, fournit une interface avec la page HTML du client.

J'étais plus intéressé par la façon dont les applications puissantes Python CGI peuvent être écrites, j'ai donc commencé à apprendre directement la partie programmation de Python. Tout d'abord, j'ai dû configurer le serveur Web pour qu'il prenne déjà en charge CGI. a L'environnement de développement intégré wamp est installé, il n'est donc pas nécessaire d'installer Apache. Il existe de nombreux articles de blog sur Internet sur la façon de configurer sous Apache, et ils sont sous l'environnement Linux, mais je pense. le contenu du fichier de configuration ne devrait pas être Il y aura de gros changements, alors j'ai commencé mon voyage de bricolage. Il s’avère qu’utiliser Windows pour le développement est vraiment un piège.

Selon le site d'apprentissage en ligne Python CGI, vous devez d'abord configurer le répertoire CGI, modifier httpd.conf dans le fichier de configuration Apache

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

puis Modifiez le fichier httpd.conf comme suit :

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

Ajoutez ensuite le suffixe .py dans AddHandler , afin que nous puissions accéder au fichier de script python se terminant par .py :

Après avoir fait tout cela, redémarrez le serveur (Apache/Wamp) et écrivez le premier programme CGI , le code est le suivant :

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;

Le contenu de la première ligne précise l'emplacement de l'interpréteur de script, qui peut être déterminé en fonction de Changez le chemin de votre propre installation

et saisissez dans la barre d'adresse du navigateur : http://localhost/cgi-bin/ test1.py

Ensuite, l'accès au navigateur affiche les résultats suivants :

Hello Word! This is my first CGI program

Pas de problème

Puis écrivez le deuxième programme :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>"

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

dans le navigateur Cependant, il n'a pas été affiché

Bonjour ZARA ALI

comme indiqué sur le site Web mais l'erreur suivante s'est produite. Astuce


J'étais donc perplexe. L'environnement de configuration était le même et les codes étaient exactement les mêmes. pareil. Quel était le problème ? Ensuite, j'ai utilisé Baidu Apache CGI sous la méthode de configuration Windows, cependant, toutes les méthodes de configuration sont sorties sous Linux, donc je n'ai pas eu le choix de réinstaller wamp puis de reconfigurer l'environnement CGI. a refait chacune des étapes ci-dessus, puis a ajouté le code sur le site Web. Copiez-le dans l' éditeur , puis saisissez-le à nouveau dans le navigateur :

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

Le. Le résultat est toujours la chaîne de messages d'erreur ci-dessus, j'ai donc regardé attentivement l'invite, en gros. Cela signifie :

Erreur interne du serveur

Le serveur a rencontré une erreur interne ou n'a pas pu terminer ma demande en raison d'une mauvaise configuration

Veuillez contacter l'administrateur du serveur par e-mail pour l'informer de cette erreur et de ce que vous devrait faire avant que cette erreur ne se produise. Quelle opération

Pour plus d'informations, veuillez consulter le journal des erreurs du serveur

Pour cette raison, Je crois fermement que c'est parce que j'ai mal configuré le serveur, alors que j'étais perdu, j'ai soudainement pensé que le premier programme test1 pouvait fonctionner correctement même si je n'avais modifié aucun fichier de configuration auparavant. Cette erreur n'a-t-elle rien à voir avec. les fichiers de configuration ? J'essaie donc de supprimer l'instruction déclarant le chemin de l'interpréteur dans la première ligne de test1 et de l'exécuter à nouveau. La même erreur apparaît dans le navigateur

.

Je suis donc très soulagé, car cela confirme ma supposition, cela n'a rien à voir avec la configuration du serveur, car mon Le fichier de script contient une erreur, le serveur ne peut donc pas répondre à la demande. Si tel est le cas, l'erreur de hello_get.py est également la même. Le problème est alors beaucoup plus simple. Vérifiez simplement s'il y a des erreurs dans le code.

Ici, je veux réfléchir à une de mes mauvaises habitudes : lorsque j'essaie d'exécuter une routine sur le site Web, j'appuie toujours sur ctrl C puis sur ctrl V Copiez-le et collez-le dans votre propre éditeur. Les programmes simples conviennent, mais les programmes complexes comportant de nombreux blocs de code ont les conséquences de cette habitude : un format d'indentation incorrect, puis des erreurs d'exécution. Ce problème existe en Python. C'est particulièrement évident, car Python. a des exigences très strictes en matière d'indentation, vous ne devez donc pas copier et coller des programmes Python dans vos propres programmes. Vous devez taper code par code pour vous assurer que l'indentation est sous votre contrôle. 3bb3ba5d8a8c1e677360c9d603cb067b En fait, j'ai déjà essayé de copier en ligne. Le code du langage C est placé dans VC++6.0. En apparence, la syntaxe semble être tout à fait correcte, mais il y a toujours une erreur en dessous et l'invite est incompréhensible, donc lorsque je rencontre cette situation, je pense que c'est peut-être le cas. la raison. Cela avertit également tout le monde que le code doit être tapé vous-même dans votre programme lettre par lettre, sinon des erreurs difficiles à détecter se produiront.

Enfin, parlons de comment configurer correctement wamp (Apache) sous Windows pour exécuter correctement les scripts CGI. Les étapes sont très simples. :

Ouvrez httpd.conf

Changer la ligne 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错误

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn