分享一个PythonCGI编程的实例教程
最近一周的时间在网上继续学习Python,接触到了Python的CGI编程,CGI的官方定义如下:
CGI(Common Gateway Interface),通用网关接口,它是一段程序,运行在服务器上如:HTTP服务器,提供同客户端HTML页面的接口。
我比较感兴趣的是Python CGI能写出多厉害的应用程序,所以我就直接开始学习了Python的编程部分,首先要配置Web服务器支持CGI,我电脑上已经装好了wamp集成开发环境,所以就不用装Apache了,网上有很多博文都是讲的如何在Apache下配置,而且是Linux环境下的,不过我想配置文件内容应该不会有很大变化,于是我就开始了我的鼓捣之旅。事实证明用windows来做开发真的是个坑。
根据在线学习网站Python CGI的说法,要先设置好CGI目录,在Apache的配置文件中修改httpd.conf
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
再修改httpd.conf文件如下:
<Directory "/var/www/cgi-bin"> AllowOverride None Options +ExecCGI Order allow,deny Allow from all</Directory>
然后在AddHandler 中添加 .py 后缀,这样我们就可以访问 .py 结尾的 python 脚本文件:
做完这一切之后重新启动服务器(Apache/Wamp),编写第一个CGI程序,代码如下:
test1.py
#!D:\Python27\python # -*- coding: UTF-8 -*-print "Content-type:text/html\r\n\r\n"print '<html>'print '<head>'print '<title>Hello Word - First CGI Program</title>'print '</head>'print '<body>'print '<h2>Hello Word! This is my first CGI program</h2>'print '</body>'print '</html>'
第一行的内容指定了脚本解释器的位置,可以根据自己安装的路径更改
然后在浏览器地址栏输入:http://localhost/cgi-bin/test1.py
然后浏览器访问显示结果如下:
Hello Word! This is my first CGI program
没有什么问题
然后编写第二个程序:hello_get.py
#!D:\Python27\python# -*- coding: UTF-8 -*-# CGI处理模块import cgi, cgitb # 创建 FieldStorage 的实例化form = cgi.FieldStorage() # 获取数据first_name = form.getvalue('first_name')last_name = form.getvalue('last_name')print "Content-type:text/html\r\n\r\n"print "<html>"print "<head>"print "<title>Hello - Second CGI Program</title>"print "</head>"print "<body>"print "<h2>Hello %s %s</h2>" % (first_name, last_name)print "</body>"print "</html>"
在浏览器输入localhost/cgi-bin/hello_get.py?first_name=ZARA&last_name=ALI
然而并没有像网站上说的那样输出
Hello ZARA ALI
而是出现了以下的错误提示
于是我就纳闷了,配置环境一样,代码都是一模一样,到底是哪里出问题了呢,然后我就百度Windows下Apache CGI配置方法,然而出来的都是Linux下的配置方法,于是没办法,我选择了重装wamp然后重新配置CGI环境,然后我依次将上面的每一步又都做了一遍,然后将网站上的代码复制到编辑器然后再次在浏览器中输入:
http://localhost/cgi-bin/hello_get.py?first_name=ZARA&last_name=ALI
结果仍然是上面那一串错误提示,于是我仔细看了一下这个提示,大致意思就是:
服务器内部错误
服务器发生了一个内部错误或者由于错误配置从而无法完成我的请求
请邮件联系服务器管理员告知这个错误以及出现这个错误之前你做了什么操作
想了解更多信息请查阅服务器错误日志
因为这个于是我坚定不移地相信是因为我把服务器配置错了,正当我一筹莫展的时候,我突然想到,我之前没有修改任何配置文件时,第一个程序test1都能正确运行,会不会这个错误与配置文件无关呢,于是我试着把test1的第一行声明解释器路径的那一条语句去掉了,再次运行,浏览器中出现了同样的错误
所以我大感欣慰,因为这证实了我的猜想,和服务器的配置没有关系,是因为我的脚本文件有错,所以服务器无法回应请求,既然如此,那hello_get.py的错误也同样如此了,那么问题就简单多了,只要检查代码有没有写错的地方就行了。
这里我要反思自己的一个陋习:当我尝试着运行网站上的一个例程的时候,我总是一个ctrl C然后ctrl V复制粘贴到自己的编辑器中,简单一点的程序还好,复杂一点的,代码块很多的程序,这样的习惯带来的后果就是:缩进格式不正确,然后运行错误,这个问题在Python中体现得尤其明显,因为Python对缩进要求真的非常严格,所以千万不能复制粘贴Python程序到自己的程序中,一定要一个代码一个代码的敲,确保缩进在自己的控制之下。
我说到这里明白人已经看出我hello_get.py文件的错误之处在哪里了——就是没有自己动手敲,其实我之前也试过在网上copy C语言代码到VC++6.0里面,表面看上去语法完全正确,但是下面总有一个错误,提示也是看不懂的,所以在遇到这种情况的时候我才能想到可能是这个原因。这也警示大家,代码一定要自己动手一个字母一个符号地敲进你的程序当中,否则就会出现难以发觉的错误。
最后说说如何正确配置Windows下的wamp(Apache)才能正确执行CGI脚本,步骤很简单:
打开httpd.conf
将371行的
ScriptAlias /cgi-bin/ "D:/wamp/bin/apache/apache2.4.9/cgi-bin/"前面的#号去掉,就是解除注释,将后面引号里的D:/wamp/bin/apache/apache2.4.9/cgi-bin/改成自己的cgi-bin所在的路径
将387行
保存之后重启服务器即可
【相关推荐】
2. 分享在IIS上用CGI方式运行Python脚本的实例教程
以上是分享一个PythonCGI编程的实例教程的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Python中的支持向量机(SupportVectorMachine,SVM)是一个强大的有监督学习算法,可以用来解决分类和回归问题。SVM在处理高维度数据和非线性问题的时候表现出色,被广泛地应用于数据挖掘、图像分类、文本分类、生物信息学等领域。在本文中,我们将介绍在Python中使用SVM进行分类的实例。我们将使用scikit-learn库中的SVM模

随着新一代前端框架的不断涌现,VUE3作为一个快速、灵活、易上手的前端框架备受热爱。接下来,我们就来一起学习VUE3的基础知识,制作一个简单的视频播放器。一、安装VUE3首先,我们需要在本地安装VUE3。打开命令行工具,执行以下命令:npminstallvue@next接着,新建一个HTML文件,引入VUE3:<!doctypehtml>

Golang是一门功能强大且高效的编程语言,可以用于开发各种应用程序和服务。在Golang中,指针是一种非常重要的概念,它可以帮助我们更灵活和高效地操作数据。指针转换是指在不同类型之间进行指针操作的过程,本文将通过具体的实例来学习Golang中指针转换的最佳实践。1.基本概念在Golang中,每个变量都有一个地址,地址就是变量在内存中的位置。

随着互联网的迅速发展,数据已成为了当今信息时代最为重要的资源之一。而网络爬虫作为一种自动化获取和处理网络数据的技术,正越来越受到人们的关注和应用。本文将介绍如何使用PHP开发一个简单的网络爬虫,并实现自动化获取网络数据的功能。一、网络爬虫概述网络爬虫是一种自动化获取和处理网络资源的技术,其主要工作过程是模拟浏览器行为,自动访问指定的URL地址并提取所

VAE是一种生成模型,全称是VariationalAutoencoder,中文译作变分自编码器。它是一种无监督的学习算法,可以用来生成新的数据,比如图像、音频、文本等。与普通的自编码器相比,VAE更加灵活和强大,能够生成更加复杂和真实的数据。Python是目前使用最广泛的编程语言之一,也是深度学习的主要工具之一。在Python中,有许多优秀的机器学习和深度

随着互联网的普及,验证码已经成为了登录、注册、找回密码等操作的必要流程。在Gin框架中,实现验证码功能也变得异常简单。本文将介绍如何在Gin框架中使用第三方库实现验证码功能,并提供示例代码供读者参考。一、安装依赖库在使用验证码之前,我们需要安装一个第三方库goCaptcha。安装goCaptcha可以使用goget命令:$goget-ugithub

Oracle实例数量与数据库性能关系Oracle数据库是业界知名的关系型数据库管理系统之一,广泛应用于企业级的数据存储和管理中。在Oracle数据库中,实例是一个非常重要的概念。实例是指Oracle数据库在内存中的运行环境,每个实例都有独立的内存结构和后台进程,用于处理用户的请求和管理数据库的操作。实例数量对于Oracle数据库的性能和稳定性有着重要的影响。

快速上手Django框架:详细教程和实例引言:Django是一款高效灵活的PythonWeb开发框架,由MTV(Model-Template-View)架构驱动。它拥有简单明了的语法和强大的功能,能够帮助开发者快速构建可靠且易于维护的Web应用程序。本文将详细介绍Django的使用方法,并提供具体实例和代码示例,帮助读者快速上手Django框架。一、安装D
