pyhton3 标准库 cgi 通用网关接口

本文介绍了CGI脚本的基本概念及其在Python中的应用。包括如何使用Python的CGI模块来处理用户输入、生成HTTP头部及HTML内容。还介绍了如何调试CGI脚本并处理表单提交的数据。
部署运行你感兴趣的模型镜像

此模块用于支持通用网关接口的脚本。

这个模块定义了许多 CGI 脚本工具

简介:

        一个 CGI 脚本由 HTTP 服务器调用,通常用于处理通过 <FORM> 和 <ISINDEX> 标记提交的用户输入。

        大部分情况下,CGI 脚本存放在服务器端的 cgi-bin 目录下,HTTP 服务器存放各种环境信息,可以执行脚本、并将脚本的输出返回给客户端。

        脚本的输入链接到客户端,并且表格数据也通过这种方式读出。该模块的目的是兼容不同的项目,为python 脚本提供一个简单的接口,它也提供了许多用于调试脚本的工具。最新增加的功能是支持从一个表单上传文件的功能(如果你的浏览器支持的话)。

        CGI 脚本的输出应当由两部分组成,由一个空格分隔,第一部分包含了很多 http 头(header),用于告诉客户端之后的脚本是什么类型。我们用 python 代码生成一个最小的 http 头部内容如下:

print("Content-Type: text/html")    # HTML is following
print()                             # 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 cgitb
cgitb.enable()

这将激活一个特殊的异常处理程序,如果存在任何错误,将在浏览器里显示详细信息。

如果不想显示任何错误,你也可以将反馈保存为文件,而不在浏览器显示。如下:

import cgitb
cgitb.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>")
    print("Please fill in the name and addr fields.")
    return
print("<p>name:", form["name"].value)
print("<p>addr:", form["addr"].value)
...further form processing here...

...

...

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值