ホームページ >バックエンド開発 >Python チュートリアル >CGIとは何ですか? Python CGI プログラミングの詳細な紹介
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 アーキテクチャ図
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 '<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>'この 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/htmlGET メソッドと 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('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脚本的实例教程
以上がCGIとは何ですか? Python CGI プログラミングの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。