2

我有一个包含表单的 html 页面,我希望用户能够在表单中输入一些数据。然后,我将使用 python 脚本检索这些数据。

我不明白如何使 html 和 python 进行通信。用户点击帖子后,python如何检索表单?有没有我可以用来证明这一点的基本示例?

4

2 回答 2

2

您需要的是一个 HTTP 服务器。Python 可用于制作服务器,或者您可以使用 Apache 或 Lighttpd 之类的服务器。不久前,我基于此编写了一个示例应用程序(Rock、Paper、Scissors):https ://dl.dropboxusercontent.com/u/95437705/RPS_Web.tgz

于 2012-07-09T22:44:01.853 回答
1

C0deH4cker 是正确的,你应该让你的 python 程序在某种网络服务器的某个地方运行。

对于大型项目,正确的方法是使用 Django 或 Web2py 等 Web 框架。这些框架具有出色的文档和教程页面,非常值得使用。一个较小的好处是两者都有自己的内置网络服务器,用于开发小型部署。

另一种方法是编写具有自己的 Web 服务器的 Python 代码。你可以看看 Twisted,python 的网络框架。好的信息位于http://twistedmatrix.com/documents/current/web/howto/web-in-60/index.html

最后——但这被认为有点过时了,我猜(??)——有你描述的CGI选项。大多数 Web 服务器(如 apache 和 lighttpd)都可以选择运行 CGI 脚本。CGI 脚本是非常简单的程序,它们以最简单的形式运行时,在其标准输出上输出 HTML 代码。网络服务器查看脚本中的第一行(“shebang”)以确定脚本解释器,执行脚本,获取输出并通过 HTTP 提供它。

CGI 中已经对参数传递做出了具体规定。在 Python CGI 模块中,这些可以通过 cgi.FieldStorage() 获得

首先是一些 HTML:

HTML 表单具有“动作”和“方法”属性。Action 是将表单数据发送到的 URL(绝对或相对于当前路径);Method 是要使用的方法,通常对于带有提交按钮的表单,这是“POST”。

因此,如果您在某处运行此 HTML 代码:

<html>
<body>
  <form name="sample" action="cgi-bin/myscript.cgi" method="post">
    Name: <input type="text" name="name"/>
    <input type="submit" value="Submit"/>
  </form>
</body>
</html>

当用户按下提交按钮时,所有输入值都会发布到 URL“myprogram.cgi”。

http://docs.python.org/library/cgi.html中有一篇关于 CGI 代码应该是什么样子的好文本。

一些应该工作的代码是:

import cgi

print "Content-Type: text/html"     # HTML is following
print                               # blank line, end of headers

print "<TITLE>CGI script output</TITLE>"
print "<body>\n"
print "<H1>This is my first CGI script</H1>"
print "Hello, world!"

form = cgi.FieldStorage()
if "name" not in form: 
    print "<H1>Error</H1>"
    print "Please fill in the name fields"
else:
    print "<p>name:", form["name"].value
print "</body>"

现在,重要的是您要意识到您必须在 Web 服务器的指定 URL 上提供此代码。您应该如何执行此操作取决于您的 Web 服务器。

在 linux 下的 apache 上,您通常会将脚本放在 /var/www/cgi-bin 中。可能您应该在 apache 配置中启用 cgi 执行,因为出于安全原因,它可能会被关闭。

于 2012-07-09T23:34:37.763 回答