Maison >développement back-end >Tutoriel Python >Qu'est-ce que CGI ? Une introduction détaillée à la programmation Python CGI
Qu'est-ce que CGI
CGI est actuellement maintenu par NCSA NCSA définit CGI comme suit :
CGI (Common Gateway Interface), Common Gateway Interface, qui est un programme qui s'exécute sur un serveur tel qu'un serveur HTTP, fournit une interface avec la page HTML du client.
Navigation Web
Afin de mieux comprendre le fonctionnement de CGI, nous pouvons commencer par le processus de clic sur un lien ou une URL sur une page Web :
1. Le navigateur accède à l'URL et se connecte au serveur Web HTTP.
2. Après avoir reçu les informations de la demande, le serveur Web analysera l'URL et vérifiera si le fichier consulté existe sur le serveur. Si le fichier existe, il renverra le contenu du fichier, sinon il renverra. un message d'erreur.
3. Le navigateur reçoit des informations du serveur et affiche le fichier ou le message d'erreur reçu.
Le programme CGI peut être un script Python, un script PERL, un script SHELL, un programme C ou C++, etc.
Schéma d'architecture CGI
Prise en charge et configuration du serveur Web
Avant d'effectuer la programmation CGI, assurez-vous que votre serveur Web prend en charge CGI et The Le gestionnaire CGI a été configuré.
Apache prend en charge la configuration CGI :
Configurez le répertoire CGI :
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
Tous les programmes CGI d'exécution du serveur HTTP sont enregistrés dans un répertoire préconfiguré. Ce répertoire est appelé répertoire CGI, et par convention, il est nommé /var/www/cgi-bin.
L'extension des fichiers CGI est .cgi, et python peut également utiliser l'extension .py.
Par défaut, le répertoire cgi-bin dans lequel le serveur Linux est configuré pour s'exécuter est /var/www.
Si vous souhaitez spécifier d'autres répertoires pour exécuter les scripts CGI, vous pouvez modifier le fichier de configuration httpd.conf comme suit :
<Directory "/var/www/cgi-bin"> AllowOverride None Options +ExecCGI Order allow,deny Allow from all</Directory>
Ajoutez le suffixe .py dans AddHandler afin que nous puissions Accédez au fichier de script python se terminant par .py :
AddHandler cgi-script .cgi .pl .py
Le premier programme CGI
Nous utilisons Python pour créer le premier programme CGI, le nom du fichier est hello.py, et le fichier se trouve dans /var Dans le répertoire /www/cgi-bin, le contenu est le suivant :
#!/usr/bin/python# -*- coding: UTF-8 -*-print "Content-type:text/html"print # 空行,告诉服务器结束头部print '<html>'print '<head>'print '<meta charset="utf-8">'print '<title>Hello Word - 我的第一个 CGI 程序!</title>'print '</head>'print '<body>'print '<h2>Hello Word! 我是来自菜鸟教程的第一CGI程序</h2>'print '</body>'print '</html>'
Après avoir enregistré le fichier, modifiez hello.py et modifiez les permissions du fichier à 755 :
chmod 755 hello.py
Ce script hello.py est un simple script Python Le contenu de sortie de la première ligne du script "Content-type: text/html" est envoyé au navigateur. et indique au navigateur que le type de contenu affiché est "text/html" .
Utilisez print pour afficher une ligne vierge pour indiquer au serveur de terminer les informations d'en-tête.
En-tête HTTP
Le "Content-type: text/html" dans le contenu du fichier hello.py fait partie de l'en-tête HTTP, qui sera envoyé au navigateur pour indiquer au navigateur le fichier. Type de contenu.
Le format de l'en-tête HTTP est le suivant :
HTTP 字段名: 字段内容
Par exemple :
Content-type: text/html
Ce qui suit est un simple script CGI qui génère des variables d'environnement CGI :
#!/usr/bin/python# -*- coding: UTF-8 -*-# filename:test.pyimport osprint "Content-type: text/html"printprint "<meta charset=\"utf-8\">"print "<b>环境变量</b><br>";print "<ul>"for key in os.environ.keys(): print "<li><span style='color:green'>%30s </span> : %s </li>" % (key,os.environ[key])print "</ul>"
Méthodes GET et POST
Le client du navigateur transmet les informations au serveur via deux méthodes, ces deux méthodes sont la méthode GET et la méthode POST.
使用GET方法传输数据
GET方法发送编码后的用户信息到服务端,数据信息包含在请求页面的URL上,以"?"号分割, 如下所示:
www.test.com/cgi-bin/hello.py?key1=value1&key2=value2
有关 GET 请求的其他一些注释:
GET 请求可被缓存
GET 请求保留在浏览器历史记录中
GET 请求可被收藏为书签
GET 请求不应在处理敏感数据时使用
GET 请求有长度限制
GET 请求只应当用于取回数据
简单的url实例:GET方法
以下是一个简单的URL,使用GET方法向hello_get.py程序发送两个参数:
/cgi-bin/test.py?name=菜鸟教程&url=www.runoob.com
以下为hello_get.py文件的代码:
#!/usr/bin/python# -*- coding: UTF-8 -*-# filename:test.py# CGI处理模块import cgi, cgitb # 创建 FieldStorage 的实例化form = cgi.FieldStorage() # 获取数据site_name = form.getvalue('name')site_url = form.getvalue('url')print "Content-type:text/html"printprint "<html>"print "<head>"print "<meta charset=\"utf-8\">"print "<title>菜鸟教程 CGI 测试实例</title>"print "</head>"print "<body>"print "<h2>%s官网:%s</h2>" % (site_name, site_url)print "</body>"print "</html>"
文件保存后修改 hello_get.py,修改文件权限为 755:
chmod 755 hello_get.py
简单的表单实例:GET方法
以下是一个通过HTML的表单使用GET方法向服务器发送两个数据,提交的服务器脚本同样是hello_get.py文件,hello_get.html 代码如下:
<!DOCTYPE html><html><head><meta charset="utf-8"><title>菜鸟教程(runoob.com)</title></head><body> <form action="/cgi-bin/hello_get.py" method="get">站点名称: <input type="text" name="name"> <br /> 站点 URL: <input type="text" name="url" /><input type="submit" value="提交" /></form></body></html>
【相关推荐】
2. 分享在IIS上用CGI方式运行Python脚本的实例教程
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!