由于接触到Python Web开发,正好把最简单的CGI方式研究了一下,话说在Windows下配置Python的Web开发还真的蛮麻烦的,Linux下配置倒挺容易,正好微软有技术文章《Using Python Scripts with IIS》介绍了这些内容,此文介绍了两种方法,一是使用ASP引擎来运行Python脚本,这个可能需要用到ActivePython,当然ASP技术已经过时了,我今天就简单介绍下CGI模块运行方式。
编写简单的支持CGI的Python脚本(本文介绍3.2版本的Python):
print("Status: 200 OK") print("Content-type: text/html") print() # 打印一行空白行,用于分隔HTTP Header和正文 print("<h1>Hello World!</h1>")
这样就可以了,大家可以猜出CGI是将标准输出流重新定向到HTTP输出流来实现网页或者数据传输的。
当然这个在IIS中是不能直接运行的,我们需要配置一下,打开Internet 信息服务(IIS)管理器界面,选择“处理程序映射”。
在接下来出现的界面右侧选择“添加模块映射”。
IIS7添加模块映射
假设我们的Python 3.2安装于C:\Python32,那么可以向下图这样填写:
然后点击确定,在接下来出现的对话框选择“是”。
好了,我们的配置完成了,重启一下IIS,然后赶快试试刚才的代码吧。可能有人会抱怨,用CGI编写网页一旦报错调试会比较麻烦,比如报下面的错误:
HTTP 错误 502.2 - Bad Gateway
指定的 CGI 应用程序由于未返回完整的一组 HTTP 头而产生错误行为。它实际返回的头是“Traceback (most recent call last): File "E:\projects\test.py", line 3, in <module> 1/0 ZeroDivisionError: division by zero ”。
其实我们只需要在最开始引入import cgitb; cgitb.enable()就可以了,就像下面这样:
import cgitb; cgitb.enable() print("Status: 200 OK") print("Content-type: text/html") print() # 打印一行空白行,用于分隔HTTP Header和正文 print("<h1>Hello World!</h1>")
这样一旦出错,就会以友好的方式将错误输出来。
对于表单的处理,可以参考import cgi模块(cgi.FieldStorage),网上有很多此方面的介绍,我就不多说了,Enjoy it!
问题内容: 我正在调试一些必须在我的虚拟机上运行的python脚本。而且,我更喜欢在本地(虚拟机外部)编辑脚本。因此,我发现每次都将脚本修改为虚拟机 很繁琐。谁能提出一些有效的方法? 特别是,我想知道是否可以在远程PVM上执行python脚本。像这样: 问题答案: 可以使用ssh。Python接受连字符(-)作为执行标准输入的参数, 运行 python –help 以获得更多信息。
问题内容: 我刚刚开始学习Python,现在我很迷路。我想在通过hosting24.com托管的服务器上运行脚本。他们的常见问题解答说他们支持Python,但是我不知道将脚本放在哪里运行。 我的根目录中有一个名为cgi-bin的文件夹,我猜这是我放置脚本的位置吗?有人可以向我解释这是如何工作的吗? 问题答案: 很简单,您可以将Python脚本重命名为“ pythonscript.cgi”。将其发布
本文向大家介绍在Apache服务器中运行CGI程序的方法,包括了在Apache服务器中运行CGI程序的方法的使用技巧和注意事项,需要的朋友参考一下 关于apache与CGI在这里就不解释了. 1、apache下载地址:http://www.apache.org,下面以2.0.63为例介绍运行CGI程序的配置。 2、下载Windows下的Perl解释器ActivePerl,官方网站:http://w
问题内容: 我有一个Web应用程序,可以在开发服务器上的VS 2013上正常运行,但是一旦在IIS 7.5 2008 R2服务器上发布了该Web应用程序,位于自定义脚本文件中的Ajax脚本就无法使用了,尽管其他JQuery脚本也是如此不调用Ajax的设备可以正常工作。为了使ajax在服务器中工作,还有其他需要做的事情吗?我已经阅读了一些有关的信息,但尚未找到答案。我在IIS和Ajax方面的经验有限
我正在学习Perl。目前我正在学习Perl CGI脚本,在这个脚本中我编写了一个示例hello world程序 我将上述脚本保存在为此,我在机器中安装了apache web服务器,我使用它工作正常。然后我打招呼。使用apache服务器在我的浏览器中编写pl程序 但上面的url显示错误。 为什么它显示这个。在脚本或apache中有黄的东西吗?有人面临这个问题吗?请让我知道,试着解决这个问题 更新:
http://prntscr.com/4wnfxf