python与cgi

心血来潮,今天简单的把python 的web编程基础以及如何用python编写cgi程序的过程做一个简单的称述:

一般地,要开发和运行web应用程序,都需要安装web服务器以及相关的cgi服务来执行cgi程序,在python中也不例外;

不过,如果不是生产环境,如就普通的开发自测或者开发过程中,也可以用python自带的简单小巧的web服务器:CGIHTTPServer,下面我们来演示一下整个使用过程:

我自己的虚拟机上面安装的python是2.7.x,我们通过以下方式调起并运行python自带的webserver,见:

python -m CGIHTTPServer   [port] &

其中 CGIHTTPServer后面的端口号可以自定义,也可以不用带任何端口号,默认端口为8000,其中的&符合表示该启动进程后台运行,启动后,运行结果如下:

[root@jordy www]# python -m CGIHTTPServer  &
[1] 9221
[root@jordy www]# Serving HTTP on 0.0.0.0 port 8000 ...

我们看到,已经在8000端口上监听并等待请求,并且服务器会将当前目录作为默认的web根目录,我们可以在当前目录下新建html的页面文件index.html,内容为:

I am html response by CGIHTTPServer!

在浏览器运行url并请求:http://xxxxxx:8000/index.html

我们看到浏览器成功的返回以上信息;


以上演示了整个静态的html页面的请求过程,拿如果是构建动态的cgi程序,那又需要如何做呢?我们编写一个test.py的文件,内容见:

#!/usr/bin/env python
#coding=utf-8 
import cgi
res = '''Content-type: text/html; charset=utf-8\n
<html>
卓丁
</html>
'''
print res

然后我们需要将该文件部署到当前目录下的cgi-bin目录下(注意,.py文件必须是部署到该目录下,这是python自带的该web服务器自己的一个写死的一个机制而已),所以需要手动先建立cgi-bin目录,然后将test.py部署到该目录下,这样,我们就可以通过url来访问该cgi程序,如:

http://192.168.1.3:8000/cgi-bin/test.py

然后看到在浏览器成功输出结果:卓丁


python 要处理表单的话,需要cgi调用其中的FieldStorage()方法,然后再取出表单元素的值:

form = cgi.FieldStorage()
if "name" not in form or "addr" not in form:
    print "<H1>Error</H1>"
    print "Please fill in the name and addr fields."
    return
print "<p>name:", form["name"].value
print "<p>addr:", form["addr"].value


如果是用占位符 连接固定字符串与变量,则可以参考下面的代码:

#!/usr/bin/env python
#coding=utf-8
import cgi
import MySQLdb
html = '''Content-Type:text/html\n
<html>
hello %s.
</html>
'''
form = cgi.FieldStorage()
name = form['uname'].value
print html % (name)



更多详情,请参考:

http://www.runoob.com/python/python-cgi.html 






猜你喜欢

转载自blog.csdn.net/bawenmao/article/details/78697005
CGI