CGI&蟒蛇

时间:2009-04-28 09:02:13

标签: python cgi

这是我的问题...... 我有一个python脚本,一旦从命令行执行,就会执行所需的操作并退出。如果在执行过程中程序无法执行选择,他会提示用户并要求他们做出决定! 现在我必须实现一个Web界面,这里出现问题...我创建了一个简单形式的htm文件,一旦用户“提交”,他将参数传递给只包含一行的cgi脚本并运行我的python程序!似乎工作...... 我的问题是:如果程序需要让用户选择,我怎么能将这个值返回到我的python脚本!为了提示用户做出选择,我需要创建一个包含可能选择的网页...有谁知道如何用python打开网页? 第二个也是最重要的问题是:如何将网页中的值返回到“原始”python模块?在python中我只想做一个

返回选择

但是有了一个网页,我不知道怎么做!!

回顾: 1.从网页开始,我运行一个cgi脚本!完成

  1. 这个CGI脚本运行我的python程序......完成

  2. 如果该计划无法做出决定,

    3a创建一个网页,其中包含我可以做的选择

    3b显示创建的网页????????

    3c将响应返回到原来的pyhon模块????????

  3. 提前致谢

5 个答案:

答案 0 :(得分:9)

“有谁知道如何用python打开网页?第二个也是最重要的问题是:如何将网页中的值返回到我的”原始“python模块?”

这一切都很简单。

但是,您需要了解网络 的内容。您需要阅读Web服务器,浏览器和HTTP协议。

以下是黄金法则:网络服务器通过网页响应HTTP请求。

该规则的第二部分是:请求是一个URL和一个方法(GET或POST)。还有更多的请求,但这是重要的部分。

这就是发生的一切。因此,您必须将您的用例重新编写为上述表单。

人点击书签;浏览器发出一个空请求(到“/”的URL)并获取一个表单。

人填写表格,点击按钮;浏览器POST的请求(到表单中的URL)并获得两件事之一。

  • 如果你的脚本有效,他们会得到一个说明一切正常的页面。

  • 如果您的脚本需要信息,他们会获得另一种形式。

人填写表格,点击按钮;浏览器POST是请求(到表单中的URL)并获得说明它全部工作的最终页面。

您可以通过“CGI”脚本完成所有这些操作。使用mod_wsgi并将您的东西插入Apache Web服务器。

或者,您可以获得一个Web框架。 Django,TurboGears,web.py等。即使您认为您的操作很简单,您也会对框架感到满意。

答案 1 :(得分:1)

我认为如果需要选择并接受选择作为参数,您可以修改Python脚本以返回错误。如果这样做,您可以检查cgi脚本的返回值,并使用它来适当地调用python脚本并将信息返回给用户。

有没有理由不能直接调用python脚本?如果你要避免使用中间CGI,我怀疑你最终会得到一个更简洁的实现。

您使用的是哪个网络服务器?什么cgi语言?可能是Perl?

答案 2 :(得分:0)

网页不返回值,它们不是程序 - 网页只是HTML的静态集合或浏览器可以显示的类似内容。您的CGI脚本不能等待用户发送响应 - 它必须将网页发送给用户并终止。

但是,如果浏览器根据该页面中的数据对您的CGI程序(或不同的CGI程序)执行第二次查询,那么您可以通过该方式收集信息并从该点开始继续。

答案 3 :(得分:0)

如果你在python中编写你的cgi然后从cgi脚本调用你的python脚本可能会更容易。

更新脚本以将UI与逻辑分开。 然后,使用(python)cgi脚本将脚本连接起来相对容易。

对于python cgi引用: Five minutes to a Python CGI

答案 4 :(得分:0)

http://docs.python.org/library/cgihttpserver.html

我认为首先你需要将代码与界面分开。当您运行脚本时,它会吐出一个页面。您可以使用url参数将参数传递给它。理想情况下,你想要做你的逻辑,然后将结果传递给python打印到cgi的模板。