Python将列表传递到表单并检索为列表

时间:2011-11-27 10:48:32

标签: python cgi

在python(cgi)中通过表单传递List的最佳方法是什么。

ListStr = ['State1', 'State2', 'State3']
TrVListStr = '##'.join(ListStr)


print """
   <form method="post">
   <input type=hidden name="state_carry" value="""+TrVListStr+"""><br />
   <input type="submit" value="Submit" />
   </form> 
"""

提交后我应该在提交之前有列表。

我可以再次分割(基于##规则)形式['state_carry] .value来获取它。但我认为这不是好办法。

有没有办法通过表单传递Python List并稍后检索它们。

感谢。

2 个答案:

答案 0 :(得分:3)

您可以使用python cgi module。文档specifically covers您具有特定字段名称的多个值的情况。

基本思想是你的html表单中可以有多个具有相同名称的字段,每个字段的值是列表中的一个值。然后,您可以使用getlist()方法将所有值检索为列表。例如:

print "<form method=\"post\">"

for s in ListStr:
    print "<input type=hidden name=\"state_carry\" value=\"" + s + "\"><br />"

print "<input type=\"submit\" value=\"Submit\" />"
print "</form>"

然后在您的CGI脚本中,您将拥有类似的内容:

MyList = form.getlist("state_carry")

答案 1 :(得分:1)

在python中我会这样做。

###In the form page.
import cgi

#Convert list of values to string before passing them to action page.
ListStr=','.join(['State1', 'State2', 'State3'])

print "<input type=hidden name=\"state_carry\" value=\""+ListStr+"\"><br />"

###In the action page
import cgi

#Return the string passed in the user interaction page and transform it back to a list.
ListStr=cgi.FieldStorage().getvalue('state_carry').split(',')