Python 中的 CGI 是什么?

Python 中的 CGI 是什么?

CGI(Common Gateway Interface)是一种用于 Web 服务器与应用程序之间通信的标准协议。在 Python 中,CGI 程序可以使用标准的 CGI 模块来处理 HTTP 请求和响应。本文将介绍 Python 中的 CGI,并给出示例代码说明如何编写简单的 CGI 程序。

阅读更多:Python 教程

什么是 CGI?

CGI 是一种为 Web 服务器与应用程序交互通信的标准协议,它通过在 URL 中指定 CGI 调用并传递参数,将 HTTP 请求传递给处理程序,并将响应返回给服务器。CGI 程序可以用任意编程语言编写,只要它遵循标准的 CGI 协议。在 Python 中,CGI 程序可以使用标准的 CGI 模块来处理 HTTP 请求和响应。

如何编写 CGI 程序?

在 Python 中编写 CGI 程序需要遵循以下几个步骤:

  1. 首先,需要在 Web 服务器上设置一个 CGI 调用。这通常需要在 Web 服务器的配置文件中指定一个目录,使其能够运行 Python 解释器并执行 CGI 程序。
  2. 然后,需要编写一个 Python 脚本,用于处理 HTTP 请求并生成响应。这通常需要通过使用标准的 CGI 模块来获取 HTTP 请求中的数据,并将响应发送回服务器。
  3. 最后,可以使用标准的 HTML 表单来调用 CGI 程序并传递参数。在 HTML 表单中,可以指定一个 URL(即 CGI 调用),并设置一些参数,如下所示:
<form action="/cgi-bin/myscript.py" method="POST">
    <input type="text" name="input1">
    <input type="text" name="input2">
    <input type="submit" value="Submit">
</form>

在这个例子中,我们指定了一个 URL:“/cgi-bin/myscript.py”,它将调用名为“myscript.py”的 Python 脚本。我们还设置了两个文本字段,名称为“input1”和“input2”,并给表单添加了一个提交按钮。

下面是一个简单的 Python CGI 程序的示例。这个程序获取 HTTP 请求中的参数,并将它们显示在响应中:

#!/usr/bin/python
import cgi

print("Content-type: text/html")
print()

params = cgi.FieldStorage()
input1 = params.getvalue("input1")
input2 = params.getvalue("input2")

print("<html><head><title>My CGI Program</title></head>")
print("<body>")
print("<p>Input 1 was: {}</p>".format(input1))
print("<p>Input 2 was: {}</p>".format(input2))
print("</body></html>")

在这个示例程序中,我们首先通过导入 CGI 模块来获取 HTTP 请求中的参数。然后,我们使用 print() 函数输出 HTTP 响应的头部。注意,头部必须以“Content-type”行开头,并设置为“text/html”。最后,我们在响应正文中输出网页的 HTML 代码,其中包含用户输入的值。

如何在 Apache Web 服务器上运行 Python CGI 程序?

在 Apache Web 服务器中运行 Python CGI 程序需要以下步骤:

  1. 在 Web 服务器上安装 Python 解释器。
  2. 配置 Apache Web 服务器以允许 CGI 程序运行。这需要在 Apache 的配置文件中设置一些选项,如下所示:
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>

在这个例子中,我们将 CGI 程序存放在目录“/usr/lib/cgi-bin/”中,然后在Apache 配置文件中设置了一个 ScriptAlias 指令,将 URL 中的“/cgi-bin/”映射到该目录。然后,我们使用 Directory 指令设置一些选项,使 Apache 允许执行 CGI 程序。

  1. 编写 Python CGI 程序,并将其保存到“/usr/lib/cgi-bin/”目录下。确保该文件有执行权限。

  2. 访问 CGI 程序的 URL。可以通过在浏览器中输入 URL 或使用类似 curl 的命令行工具来访问 CGI 程序的 URL。

示例:计算两个数的和

下面是一个简单的 Python CGI 程序,用于计算两个数的和。这个程序从 HTTP 请求中获取两个数值,并计算它们的和,然后在响应中显示结果。

#!/usr/bin/python
import cgi

print("Content-type: text/html")
print()

params = cgi.FieldStorage()
num1 = int(params.getvalue("num1"))
num2 = int(params.getvalue("num2"))
result = num1 + num2

print("<html><head><title>Calculator</title></head>")
print("<body>")
print("<p>First number: {}</p>".format(num1))
print("<p>Second number: {}</p>".format(num2))
print("<p>Result: {}</p>".format(result))
print("</body></html>")

在这个示例程序中,我们首先获取 HTTP 请求中传递的两个数值参数。我们还将它们转换为整数以便进行计算。然后,我们计算它们的和,并将结果输出到 HTTP 响应中。

使用这个程序的方法如下:

  1. 将程序保存为“/usr/lib/cgi-bin/add.py”。
  2. 在浏览器中输入“http://example.com/cgi-bin/add.py?num1=3&num2=4”,其中“example.com”是 Web 服务器的域名或 IP 地址,以及 num1 和 num2 的值是要计算它们的和的值。
  3. 单击“Submit”按钮并查看结果。

结论

CGI 是一种用于 Web 服务器与应用程序之间通信的标准协议。在 Python 中,CGI 程序可以使用标准的 CGI 模块来处理 HTTP 请求和响应。通过在 Web 服务器上配置 CGI 调用,并编写 Python CGI 程序,我们可以轻松地处理用户提交的表单数据,以及执行其他各种任务,如文件上传、数据库查询等。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程