模块介绍
Python 的 cgi
模块是一个标准库模块,专为处理 Web 开发中的 CGI(Common Gateway Interface)脚本而设计。它提供了许多工具,用于处理客户端提交的表单数据、管理环境变量、生成 HTTP 响应内容等。cgi
模块适用于所有 Python 3 版本,不需要额外安装即可使用。
应用场景
cgi
模块主要用于 Web 开发中的以下场景:
- 表单数据处理:接收并解析客户端通过 HTML 表单提交的数据。
- 动态生成 HTML 内容:根据输入的数据,动态生成不同的 HTML 页面。
- 环境变量管理:访问和利用服务器提供的环境变量信息。
- 文件上传处理:接收客户端上传的文件,并存储到服务器。
安装说明
cgi
模块是 Python 标准库的一部分,自带于所有 Python 3 版本中,无需额外安装。只需在脚本中导入即可使用:
用法举例
例子 1: 处理表单数据
假设我们有一个简单的 HTML 表单,用于用户输入姓名和年龄,然后通过 CGI 脚本处理并生成响应页面。
HTML 表单代码:
1 2 3 4 5 6 7 8 9 10
| <!DOCTYPE html> <html> <body> <form action="/cgi-bin/hello.py" method="post"> 姓名: <input type="text" name="name"><br> 年龄: <input type="text" name="age"><br> <input type="submit" value="提交"> </form> </body> </html>
|
CGI 脚本 hello.py
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
import cgi
form = cgi.FieldStorage()
name = form.getvalue("name") age = form.getvalue("age")
print("Content-type: text/html") print()
print(f""" <!DOCTYPE html> <html> <body> <h2>你好,{name}!</h2> <p>你今年 {age} 岁。</p> </body> </html> """)
|
此脚本接受用户提交的表单数据,并将其用于生成响应 HTML 页面。
例子 2: 处理文件上传
假设我们有一个 HTML 表单,用于上传文件到服务器。
HTML 表单代码:
1 2 3 4 5 6 7 8 9
| <!DOCTYPE html> <html> <body> <form enctype="multipart/form-data" action="/cgi-bin/upload.py" method="post"> 上传文件: <input type="file" name="file"><br> <input type="submit" value="上传"> </form> </body> </html>
|
CGI 脚本 upload.py
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
import cgi, os
form = cgi.FieldStorage()
if "file" in form: file_item = form["file"]
if file_item.filename: filepath = os.path.join("/path/to/save", os.path.basename(file_item.filename)) with open(filepath, "wb") as f: f.write(file_item.file.read())
message = f"文件 {os.path.basename(file_item.filename)} 上传成功!" else: message = "文件上传失败。"
print("Content-type: text/html") print()
print(f""" <!DOCTYPE html> <html> <body> <p>{message}</p> </body> </html> """)
|
此脚本接收并处理用户上传的文件,将其存储到服务器指定目录。
例子 3: 访问环境变量
此例展示如何使用 cgi
模块来获取和显示服务器的环境变量。
CGI 脚本 env.py
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
import os
print("Content-type: text/html") print()
print("<!DOCTYPE html>") print("<html>") print("<body>") print("<h2>服务器环境变量</h2>") print("<table border='1'>")
for key, value in os.environ.items(): print(f"<tr><td>{key}</td><td>{value}</td></tr>")
print("</table>") print("</body>") print("</html>")
|
这个脚本显示了所有的服务器环境变量,帮助开发者调试和理解运行环境。
强烈建议大家关注我的博客 - 全糖冲击博客!在这里,你能找到所有 Python 标准库的使用教程,方便快速查询和学习。每篇文章都经过仔细编写和验证,确保高质量和实用性。更新及时,以跟上技术发展的步伐。通过关注我的博客,你可以:
- 节省时间:不再为查找模块用法而东奔西跑,一站式解决所有问题。
- 提升技能:学习到最地道、实用的 Python 编程技巧,轻松深入掌握每一个模块的精髓。
- 获取灵感:丰富的案例和示范代码,激发你的编程灵感,助你轻松应对各种开发难题。
相信通过我的博客,你定能快速提升编程能力,实现技术突破!赶快点击关注吧!