25. Python脚本学习笔记二十五 CGI脚本
本篇名言:“人海中再回首,朋友真诚依旧,生命里重逢,心境平和温柔,往事如风,岁月如歌,漫漫人生路,苍桑几许,幸福几何!”
上篇是讨论客户端技术,我们来看看服务端的技术。这次看下程序设计技术:CGI(common Gateway interface)
CGI是网络服务器可以将查询传递到专门的程序中并且在网页上显示结果的标准机制。
Python CGI程序的关键是CGI模块。
1. 搭建网络服务器
从http://archive.apache.org/dist/httpd/binaries/ 网站下载httpd软件例如:
httpd-2.2.25-win32-x86-no_ssl.msi。
蛤蟆这里是以WINDOWS为例。
然后双击进行安装即可。
安装完毕后,会自动启动,没有启动就手动启动一下,
最后在IE中刚输入127.0.0.1, 显示如下:
2. 运行CGI
修改httpd.conf文件如下:
取消注释: AddHandler cgi-script .cgi
将如下代码复制到文件simple.cgi(自己新建一个),
#!D:\python27\python.exe
print'Content-type: text/plain'
print # Prints anempty line, to end the headers
print 'Hello,world!'
然后放到Apache安装路径下的htdocs 文件夹中。
其中需要修改httpd.conf文件如下:
ScriptAlias /cgi-bin/ "D:/Apache SoftwareFoundation/Apache2.2/cgi-bin/"
<Directory "D:/Apache SoftwareFoundation/Apache2.2/cgi-bin">
AllowOverride None
OptionsExecCGI
Orderallow,deny
Allow from all
</Directory>
AddHandler cgi-script .cgi
需要重启Apache服务生效。
然后在IE中输入如下:
http://127.0.0.1/cgi-bin/simple.cgi
得到如下输出:
这样就实现了一个CGI的运行。而且这个CGI是会用PYTHON实现的。
3. 使用cgitb调试
通过CGI回溯的模块,可以得到包含出错信息的十分有用的网页。使用如下代码,其中包含分母为0的错误用法,然后的可以得到一个调试结果网页。
#!D:\python27\python.exe
import cgitb; cgitb.enable()
print 'Content-type: text/html'
print 1/0
print 'Hello, world!'
输入如下
4. 使用表单
CGI脚本的输入一般都是从已提交的WEB表单中获取。也可以直接使用参数调用CGI程序。
输入如下代码如下:
#!D:\python27\python.exe
import cgi
form =cgi.FieldStorage()
name =form.getvalue('name', 'world')
print"""Content-type: text/html
<html>
<head>
<title>Greeting Page</title>
</head>
<body>
<h1>Hello, %s!</h1>
<form action='simple3.cgi'>
Change name <input type='text'name='name' />
<input type='submit' />
</form>
</body>
</html>
"""% name
在IE中输入地址http://127.0.0.1/cgi-bin/simple.cgi
登陆输出如下:
脚本先获取一个CGI参数name,默认是world. 然后打印一个HTML显示,如果有值就会改变标题的值,没有就是默认的world.然后提交表单,继续调用simple.cgi脚本。