2013-06-13 38 views
0

我想创建一个python程序,它将从使用html的窗体接收信息。
这就是我的html代码。python cgi脚本接收表格数据

<html> 
<head> 
<title> NBA Survey! </title></head> 
<form method = "POST" action = "result.py"> 
<hr> 
Who do you think is the best Small Forward in the NBA right now? <br> 
      <input type="radio" name="9" value="Chris Paul"> Chris Paul <br> 
      <input type="radio" name="9" value="Tony Parker"> Tony Parker <br> 
      <input type="radio" name="9" value="Stephen Curry"> Stephen Curry <br> 
      <input type="radio" name="9" value="Rajon Rondo"> Rajon Rondo <br> 
      <input type="radio" name="9" value="Derrick Rose"> Derrick Rose <br> 
      <input type="radio" name="9" value="Kyrie Irving"> Kyrie Irving <br> 
      <input type="radio" name="9" value="Russell Westbrook"> Russell Westbrook <br> 
      <input type="radio" name="9" value="Other"> Other <br> 
    <input type="submit" name="submit" value="submit"> 
    </form> 
    </body> 
    </html> 

代码在Python中,这是我迄今为止。

#!/usr/bin/python 
import cgitb; cgitb.enable() 
import cgi 
import sys 
form = cgi.FieldStorage() 
if form.getvalue('9') = 'Chris Paul': 
    f1.write('Chris Paul') 
f2 = open('results.txt','a') 
g2 = f2.read().split(',') 
page += 'Chris Paul: ' + g2.count('Chris Paul') 

我想创建一个python页面,之后我打提交HTML页面上,它会将用户重定向到一个新的页面,调查的结果将显示。调查将在其他人可以投票的服务器上进行。

的页面看起来像:

克里斯 - 保罗:(票数)
托尼 - 帕克:(票数) 等等

所有帮助将不胜感激。提前致谢!

回答

0

我认为在获得任何具体帮助之前,您将不得不缩小您的问题并做更多的个人研究。但是......

......乍一看,你的问题小号提出了一些更多的问题小号

  • 如何将坚持以“票”形式与“结果”之间的数据页?我不熟悉Python CGI模块的低级使用情况,但据我所知,只需将数据存储在普通的Python变量中,一旦脚本完成后,这些变量就会消失。或者,如果我没有错,CGI脚本只能运行一个请求。
  • 您确定要对其进行重定向?如果是这样,您的“表单”处理CGI脚本只需要响应相应的301302 http状态码。另一方面,您可能希望将投票结果显示为表单的“正常”回复?在这种情况下,只需在此生成一个有效的HTML文档,并返回一个200状态码。
  • 您将如何处理“意外”表单数据?你不能相信传入的请求。也许一个请求已经被伪造,传播说是对“唐老鸭”的投票。你必须为做好准备(顺便说一句,“9”是你的表单字段一个非常不好的非描述性的名字......)
  • 这可以被看作是一个未成年问题(甚至没有问题)但是......嘿......我们在这里很专业!所以,你的HTML缺乏“身体”标签,并没有正确的打算。

还有一些工作要做!祝你好运。

+0

感谢您的意见。这是我第一次做这样的事情。 – user2480957

+0

结果页面是一个简单的空白页面,它将显示每个无线电选项以数值表示的票数。 – user2480957

+0

我打算创建的页面是一个带有使用python作为引擎的结果页面的html调查页面。有了这个,我相信这些数据将被存储在python中。 “重定向”在这里可能是一个糟糕的词选择。在html页面中,提交按钮已经将用户带到了结果页面,所以我想我在那个类别中很好。 那么这将是一个简单的调查使用电台选项,因此意外的数据将不会出现。另一种选择也是收音机。 – user2480957

0

先阅读Sylvain Leroux的回答。

#!/usr/bin/python 
import cgitb; cgitb.enable() 
import cgi 
import sys 
from collections import Counter 

form = cgi.FieldStorage() 

name = form.getvalue('9') 
if name: 
    with open('results.txt', 'a') as f: 
     f.write(name + '\n') 

print('Content-Type: text/plain\n') 

with open('results.txt') as f: 
    counts = Counter(line.strip() for line in f) 

for name, count in counts.most_common(): 
    print('{}: {}'.format(name, count))