在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并稍后检索它们。
感谢。
答案 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(',')