📜  Python中的CGI编程(1)

📅  最后修改于: 2023-12-03 15:34:24.907000             🧑  作者: Mango

Python中的CGI编程

CGI(Common Gateway Interface)是一个标准,它定义了Web服务器如何与其它程序(通常是一个CGI脚本)进行通信,以便动态地生成Web页面。在Python中,CGI编程可以让我们在Web服务器上运行 Python 程序,并将其生成的页面展示给用户。

基本原理

CGI编程的基本原理是:Web服务器接受到HTTP请求后,如果请求的链接是CGI脚本的链接,服务器就会将CGI脚本的执行结果作为HTTP响应返回给客户端。在Python中,我们可以借助cgi模块来实现CGI编程。

以下是一个简单的CGI脚本示例:

#!/usr/bin/env python
# -*- coding:UTF-8 -*-

import cgi

# 定义HTTP响应头部
print("Content-Type: text/html")
print()

# 输出HTTP响应体
print("<html><head><title>Hello CGI</title></head><body>")
print("<h2>Hello CGI Program!</h2>")
print("</body></html>")

代码说明:

  • 第二行声明文件编码格式为UTF-8;
  • 第四行导入cgi模块;
  • 第七至第九行定义HTTP响应头部,这里设置Content-Type为text/html,表示响应的内容类型为HTML文本;
  • 第十二至第十五行输出HTTP响应体,这里输出了一个HTML页面。

由于CGI编程需要将程序放在Web服务器上运行,因此我们需要将上述代码保存为一个CGI脚本文件,并将其放置在Web服务器的CGI目录中。

使用CGI模块处理表单数据

当我们需要向 CGI 程序传递用户输入的表单数据时,我们需要使用CGI模块中的FieldStorage类来处理数据。

以下是一个使用CGI模块处理表单数据的示例:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import cgi

# 定义HTTP响应头部
print("Content-Type: text/html")
print()

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

# 获取表单输入的内容
username = form.getvalue("username")
password = form.getvalue("password")

# 输出HTTP响应体
print("<html><head><title>Login</title></head><body>")
if username == "admin" and password == "123456":
    print("<h2>Login Success</h2>")
else:
    print("<h2>Login Failed</h2>")
print("</body></html>")

代码说明:

  • 第七行创建FieldStorage实例,用来获取表单输入的内容;
  • 第九至第十行通过getvalue()方法获取表单中输入的usernamepassword
  • 第十四至第十七行根据输入的usernamepassword输出HTTP响应体。
总结

CGI编程是Python Web编程中的重要组成部分,可以让我们在Web服务器上运行 Python 程序,并将其生成的页面返回给客户端。在Python中,我们可以通过cgi模块来实现CGI编程,借助FieldStorage类来处理表单数据。