ホームページ >バックエンド開発 >Python チュートリアル >CGIとは何ですか? Python CGI プログラミングの詳細な紹介

CGIとは何ですか? Python CGI プログラミングの詳細な紹介

零下一度
零下一度オリジナル
2017-05-19 12:42:424702ブラウズ

CGIとは

CGIは現在NCSAによって管理されています。NCSAはCGIを次のように定義しています:

CGI (Common Gateway Interface)、共通ゲートウェイインターフェース、HTTPサーバーなどのサーバー上で実行されるプログラムです。 、クライアントの HTML ページに同じインターフェイスを提供します。

Web ブラウズ

CGI の仕組みをよりよく理解するには、Web ページ上のリンクまたは URL をクリックするプロセスから始めます。

1. ブラウザを使用して URL にアクセスし、HTTP Web サーバーに接続します。

2. リクエスト情報を受信した後、Web サーバーは URL を解析し、アクセスされたファイルがサーバー上に存在するかどうかを調べます。ファイルが存在する場合は、ファイルの内容を返します。存在しない場合は、エラー メッセージを返します。 。

3. ブラウザはサーバーから情報を受信し、受信したファイルやエラーメッセージを表示します。

CGI プログラムには、Python スクリプト、PERL スクリプト、SHELL スクリプト、C または C++ プログラムなどがあります。

CGI アーキテクチャ図

CGIとは何ですか? Python CGI プログラミングの詳細な紹介

Web サーバーのサポートと構成

CGI プログラミングを実行する前に、Web サーバーが CGI をサポートし、CGI ハンドラーが構成されていることを確認してください。

Apache は CGI 構成をサポートします:

CGI ディレクトリをセットアップします:

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

すべての HTTP サーバー実行 CGI プログラムは、事前に構成されたディレクトリに保存されます。このディレクトリは CGI ディレクトリと呼ばれ、慣例により /var/www/cgi-bin という名前が付けられます。

CGI ファイルの拡張子は .cgi ですが、Python では .py 拡張子も使用できます。

デフォルトでは、Linuxサーバー構成が実行されるcgi-binディレクトリは/var/wwwです。

CGI スクリプトを実行する他のディレクトリを指定したい場合は、httpd.conf 構成ファイルを次のように変更できます:

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

AddHandler に .py サフィックスを追加して、.py で終わる Python スクリプト ファイルにアクセスできるようにします:

AddHandler cgi-script .cgi .pl .py

最初の CGI プログラム

最初の CGI プログラムを作成するには、ファイル名は hello.py です。ファイルの内容は次のとおりです。

ファイルを保存した後、hello .py を変更し、ファイルのアクセス許可を 755 に変更します。

#!/usr/bin/python# -*- coding: UTF-8 -*-print "Content-type:text/html"print                               # 空行,告诉服务器结束头部print &#39;<html>&#39;print &#39;<head>&#39;print &#39;<meta charset="utf-8">&#39;print &#39;<title>Hello Word - 我的第一个 CGI 程序!</title>&#39;print &#39;</head>&#39;print &#39;<body>&#39;print &#39;<h2>Hello Word! 我是来自菜鸟教程的第一CGI程序</h2>&#39;print &#39;</body>&#39;print &#39;</html>&#39;

CGIとは何ですか? Python CGI プログラミングの詳細な紹介

この hello.py スクリプトは、スクリプトの最初の行の出力内容「Content-type:」です。 text/html」をブラウザに送信して通知する ブラウザで表示されるコンテンツタイプは「text/html」です。

print を使用して空行を出力し、サーバーにヘッダー情報を終了するように指示します。

HTTP ヘッダー

hello.py ファイルのコンテンツ "Content-type: text/html" は HTTP ヘッダーの一部であり、ファイルのコンテンツ タイプをブラウザーに伝えるためにブラウザーに送信されます。

HTTP ヘッダーの形式は次のとおりです:

chmod 755 hello.py

例:

HTTP 字段名: 字段内容

以下は、CGI 環境変数を出力する単純な CGI スクリプトです:

Content-type: text/html

GET メソッドと POST メソッド

ブラウザ クライアントはそれをサーバーには 2 つの方法があります。これらの 2 つの方法は、GET メソッドと 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(&#39;name&#39;)site_url  = form.getvalue(&#39;url&#39;)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>

【相关推荐】

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

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

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

4. 分享一个PythonCGI编程的实例教程

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

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

以上がCGIとは何ですか? Python CGI プログラミングの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。