您的位置:首页 > 理论基础 > 计算机网络

pyhton3 标准库 cgi 通用网关接口

2016-06-22 20:58 323 查看
此模块用于支持通用网关接口的脚本。这个模块定义了许多 CGI 脚本工具简介:        一个 CGI 脚本由 HTTP 服务器调用,通常用于处理通过 <FORM> 和 <ISINDEX> 标记提交的用户输入。        大部分情况下,CGI 脚本存放在服务器端的cgi-bin 目录下,HTTP 服务器存放各种环境信息,可以执行脚本、并将脚本的输出返回给客户端。        脚本的输入链接到客户端,并且表格数据也通过这种方式读出。该模块的目的是兼容不同的项目,为python 脚本提供一个简单的接口,它也提供了许多用于调试脚本的工具。最新增加的功能是支持从一个表单上传文件的功能(如果你的浏览器支持的话)。        CGI 脚本的输出应当由两部分组成,由一个空格分隔,第一部分包含了很多 http 头(header),用于告诉客户端之后的脚本是什么类型。我们用 python 代码生成一个最小的 http 头部内容如下:print("Content-Type: text/html") # HTML is followingprint() # blank line, end of headers第二部分一般是 HTML 代码,它可以很好的配合头信息去显示相关格式的文本、在线图片等。下面的例子中,用 python 打印了一些简单的 html 代码:
print("<TITLE>CGI script output</TITLE>")
print("<H1>This is my first CGI script</H1>")
print("Hello, world!")
使用 CGI 模块开始写代码之前先
import
cgi
当你写一个新的脚本之前,考虑加入以下内容:
import cgitbcgitb.enable()这将激活一个特殊的异常处理程序,如果存在任何错误,将在浏览器里显示详细信息。
如果不想显示任何错误,你也可以将反馈保存为文件,而不在浏览器显示。如下:
import cgitbcgitb.enable(display=0, logdir="/path/to/logdir")这一功能在脚本开发过程中是非常有用的。通过cgitb 生成的反馈信息,可以为你节省大量的调试时间。在确定脚本可以正常工作后,可以随时删除 
cgitb
行。
为了得到表单提交的数据,应该使用
FieldStorage 类。如果表单包含非ASCII 字符,可以设置 encoding 关键字的参数为文档设定编码。它通常包含在
HTML 文本的 HEAD 部分的 META 标签或由 Content-Type 头信息设定。它从标准输入或环境变量中读取表单内容。这可能会在标准输入上耗费资源,所以应当只调用一次。
FieldStorage
实例像 python dict 那样被索引,它支持使用 in 运算符进行成员测试,同时也支持标准的字典方法 keys() 和内置函数 len() 。如果表单字段包含空字符串则会被忽略,并且不会出现在字典中。你也可以保留这些空值,当创建的 FieldStorage 实例时,将可选参数
keep_blank_values 设置为 true 即可。
举个例子,下面的代码(假设
Content-Type 头信息已经打出)将检查 name 和 addr 是否都被设成非空字符串:
form = cgi.FieldStorage()if "name" not in form or "addr" not in form:print("<H1>Error</H1>")p4000rint("Please fill in the name and addr fields.")returnprint("<p>name:", form["name"].value)print("<p>addr:", form["addr"].value)...further form processing here...
...
...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息