【问题标题】:retrieve local html form检索本地 html 表单
【发布时间】:2012-07-09 09:26:16
【问题描述】:

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

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

【问题讨论】:

    标签: python html forms


    【解决方案1】:

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

    【讨论】:

    • 此链接显示 404 page not found 错误。有更新版本吗?
    • 重新上传到 Dropbox,现在应该可以了
    【解决方案2】:

    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 上提供此代码。您应该如何执行此操作取决于您的网络服务器。

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

    【讨论】:

      猜你喜欢
      • 2013-10-30
      • 2018-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-04
      • 2011-08-19
      • 2012-05-01
      • 2020-07-24
      相关资源
      最近更新 更多