关于Python 的CGI实例

224 阅读6分钟

CGI在Python中是Common Gateway Interface的缩写,它是解释Web服务器和脚本之间数据交换的一个基准块。一个CGI程序是由HTTP服务器在用户通过HTML输入时编写的。换句话说,它是一个程序的集合,用于在客户端和服务器应用程序之间建立动态互动。当客户端使用任何元素或向网络浏览器发送请求时,该CGI执行一个特定的请求,并将结果或输出送回网络服务器。

CGI的概念

每当我们在网站中使用超链接,并点击该超链接访问一个特定的网站或一个URL时,浏览器就会与超文本传输协议(HTTP)网络进行交互。然后,网络服务器使用一个URL并搜索一个类似的文件名。如果找到了匹配的文件,那么该文件就会被送回来。如果在第二种情况下没有找到文件,就会显示一个错误信息,说明我们输入了错误的文件名。

网络浏览器用于从网络服务器获取回复并显示内容。这可以设置HTTP的服务器,因此,每当我们要求一个特定的文件,那么这个文件必须被执行,而不是把它送回来。无论该文件的内容是什么,都会作为一个程序被执行,并被送回给浏览器来显示该文件。对于Python来说,这些代码被声明为Python脚本。

如果你愿意在网络上执行Python脚本,你必须研究如何将Python作为CGI脚本执行。

用于CGI的Apache webserver配置

为了获得我们的CGI脚本,需要对服务器进行配置。这将通过设置一个目录作为脚本别名指令来完成。你可以通过在你的系统上下载 "xamp "来使用其他选项。scriptAlias "是用来在 "文件系统 "路径和URLs之间进行映射。脚本别名使用了一种使目标目录只包含CGI脚本的效果的方法。将一个目录设置为 "scriptAlias "指令是非常必要的,因为它可以识别出该目录中存在的所有文件都是CGI脚本。通常情况下,一个脚本别名看起来就像apache web服务器的 "HTTP.conf "中的以下链接。

从一个特定的目录运行CGI

要准备一个特定的目录来显示CGI脚本,你需要使用下面的链接。

<Directory /usr/local/apache2/htdocs/dir(any directory)>Options +ExecCGI</Directory>

其中'dir'是你自己选择的目录,通过使用上述配置,你需要指定以下内容来告诉你愿意运行的CGI文件的服务器的扩展。

# AddHandler cgi-script .cgi .pl

这条信息在告诉Apache将扩展名为.CGI和.PL的文件作为CGI执行方面起着重要作用。

用于CGI配置的IIS网络服务器

我们所处的操作系统是Windows 10。这与windows server 2007和2008也是类似的。不管是什么操作系统,你必须在Windows操作系统上有一个运行的python解释器。

为此,进入任务栏。打开 "控制面板"。现在点击 "程序"。选择所需的窗口功能的选项。 一个小窗口被打开,标题为 "windows功能"。导航到互联网'互联网的信息服务'。现在转到'应用开发功能',向下移动到CGI的复选框。要继续,选择'确定'。

现在进入 "开始",然后向IIS管理器窗口移动。这里去左边面板上的'默认网站'。右键单击 "默认网站",然后单击 "添加应用程序"。

现在在'别名'文本框中,输入名称。即 "PythonApp"。并在'物理路径'中添加 "Pythonapp "应用程序的保存路径。然后点击 "ok",继续前进。

在配置了webserver以CGI方式运行python后,我们现在尝试在webserver上运行一个简单的代码。在开始之前,应该遵循一些要点。

  • 确保Python代码不包含任何语法错误。
  • 确保你的文件具有,读、写、执行的管理员权限,这样就可以在你要运行这个文件的任何地方进行修改,无论是在Windows、Linux还是Unix。

执行第一个样本文件

在输入字段中使用HTML代码

<form action = "/cgi-bin/hello_get.py" method = "get">

First Name: <input type = "text" name = "Fname">  <br />

<input type = "button" value = "Submit" />

</form>

我们只分享了一小段制作表单的代码。这个编码是为了创建一个文本文件和一个用于提交数据的按钮。你必须写出HTML的所有要点的编码。我们已经输入了当我们运行代码时将出现在Python上的名字。

现在开始写Python代码

# import cgi,cgitb

# cgitb.enable()

# form = cgi.FieldStorage()

# name = form.getvalue('fname')

# print("Name of the user is:",name)

输出结果将是

现在让我们解释一下上面写的Python代码。首先,我们需要导入基本模块来执行。

# Import cgi, cgitb.

"Cgitb.enable() "在没有任何好事发生时帮助你。或者你发现任何错误。但这里应该提到的一点是,如果你遇到EOF问题或任何形式的语法错误,它不会指导你。它有一些其他的用途。

# form = cgi.FieldStorage()

现在我们在表单中使用了CGI模块的文本文件。名称将由HTML表单提取,使用。

# form.getvalue(‘fname’)

一个打印命令被用来在HTML页面上显示我们在文本框中输入的文本。这个命令将从getvalue('fname')函数中获取数据。这里用一个变量来存储获取的值。

CGI编程的优势

CGI编程有许多有用的方面。这里提到了其中的一些。

  • 这些程序是独立于语言的。
  • CGI程序可以在任何网络服务器上工作。
  • 它们是可移植的,可以增加网络应用程序之间的动态通信。

一些缺点也需要注意

  • 这些程序很难调试,因为它们太复杂了。
  • 需要的处理时间非常长。
  • 大多数情况下,数据不存储在缓存内存中。

结论

python CGI实例 "是一篇关于在服务器和客户端之间实际建立连接的文章。这是通过在服务器和客户端的各种步骤和程序完成的。我们使用了一个简单的例子,当一个名字被输入到浏览器时,在Python上打印这个名字。为了创建输入样本页,我们还增加了一个HTML的功能。我希望我们让你了解CGI使用的意图能够奏效。