python Web 之基石 - - CGI 编程 (基于python3)

一 、CGI 编程之前缀篇

CGI 目前由NCSA维护,NCSA定义CGI如下:
CGI(Common Gateway Interface),通用网关接口,它是一段程序,运行在服务器上如:HTTP服务器,提供同客户端HTML页面的接口。

网页浏览

为了更好的了解CGI是如何工作的,我们可以从在网页上点击一个链接或URL的流程:
1、使用你的浏览器访问URL并连接到HTTP web 服务器。
2、Web服务器接收到请求信息后会解析URL,并查找访问的文件在服务器上是否存在,如果存在返回文件的内容,否则返回错误信息。
3、浏览器从服务器上接收信息,并显示接收的文件或者错误信息。
CGI程序可以是Python脚本,PERL脚本,SHELL脚本,C或者C++程序等。
第一个CGI程序
我们使用Python创建第一个CGI程序,文件名为hello.py,文件位于/var/www/cgi-bin目录中,内容如下:

print ("Content-type:text/html")
print ()                             # 空行,告诉服务器结束头部
print ('')
print ('')
print ('')
print ('Hello Word - 我的第一个 CGI 程序!')
print ('')
print ('')
print ('

Hello Word! 我是来自菜鸟教程的第一CGI程序

') print ('') print ('')

简单的url实例:GET方法

以下是一个简单的URL,使用GET方法向hello_get.py程序发送两个参数:

import codecs ,sys 
sys.stdout = codecs.getwriter('utf8')(sys.stdout.buffer)

#CGI处理模块
import cgi, cgitb 

#创建 FieldStorage 的实例化
form = cgi.FieldStorage() 

#获取数据
site_name = form.getvalue('name')
site_url  = form.getvalue('url')

print ("Content-type:text/html")
print ()
print ("")
print ("")
print ("")
print ("The site of Mr.chen ")
print ("")
print ("")
print (" Mr.chen ")
print ("")
print ("")
print ("

%s官网:%s

" % (site_name, site_url)) print ("") print ("")

GET和POST方法
浏览器客户端通过两种方法向服务器传递信息,这两种方法就是 GET 方法和 POST 方法。

使用GET方法传输数据
GET方法发送编码后的用户信息到服务端,数据信息包含在请求页面的URL上,以"?"号分割, 如下所示:

http://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=http://www.runoob.com
#!/usr/bin/python3

CGI处理模块
import cgi, cgitb 
#创建 FieldStorage 的实例化
form = cgi.FieldStorage() 
#获取数据
site_name = form.getvalue('name')
site_url  = form.getvalue('url')

print ("Content-type:text/html")
print ()
print ("")
print ("")
print ("")
print ("菜鸟教程 CGI 测试实例")
print ("")
print ("")
print ("

%s官网:%s

" % (site_name, site_url)) print ("") print ("")

使用POST方法传递数据

使用POST方法向服务器传递数据是更安全可靠的,像一些敏感信息如用户密码等需要使用POST传输数据。

以下同样是hello_get.py ,它也可以处理浏览器提交的POST表单数据:

#!/usr/bin/python3
#CGI处理模块
import cgi, cgitb 

#创建 FieldStorage 的实例化
form = cgi.FieldStorage() 

#获取数据
site_name = form.getvalue('name')
site_url  = form.getvalue('url')

print ("Content-type:text/html")
print ()
print ("")
print ("")
print ("")
print ("菜鸟教程 CGI 测试实例")
print ("")
print ("")
print ("

%s官网:%s

" % (site_name, site_url)) print ("") print ("")

以下为表单通过POST方法(method=“post”)向服务器脚本 hello_get.py 提交数据:
下为表单通过POST方法(method=“post”)向服务器脚本 hello_get.py 提交数据:





菜鸟教程(runoob.com)


站点名称:
站点 URL:

https://www.runoob.com/python3/python3-cgi-programming.html

你可能感兴趣的:(python,python3高级)