我有一个包含表单的html页面,我希望用户能够在表单中输入一些数据。然后我会用python脚本检索这些数据。
我不明白如何让html和python进行通信。 python如何在用户点击帖子后检索表单?我可以用一个基本的例子来证明这一点吗?
答案 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执行,因为出于安全原因它可能会被关闭。