检索本地html表单

时间:2012-07-09 22:38:26

标签: python html forms

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

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

C0deH4cker是对的,你应该让你的python程序在某种Web服务器的某个地方运行。

为大型项目执行此操作的正确方法是使用Django或Web2py等Web框架。这些框架具有出色的文档和教程页面,非常值得消费。一个较小的好处是,它们都有自己的内置Web服务器,用于开发和小型部署。

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

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

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

获得

首先是一些HTML:

HTML表单具有“操作”和“方法”属性。 Action是将表单数据发送到的URL(绝对或相对于当前路径);方法是使用的方法,通常用于具有提交按钮的表单,这是“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”。

关于CGI代码应该是什么样子的好文章在http://docs.python.org/library/cgi.html

一些应该起作用的代码是:

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执行,因为出于安全原因它可能会被关闭。