Python列表对象在通过CGI发送时作为文本字符串到达

时间:2011-09-13 04:11:13

标签: python cgi

我有一个列表对象,我正在使用CGI发送到脚本。该列表使用HTML表单中的隐藏字段发送。当我使用my_list = form.getlist ['name_of_hidden_​​field']在接收脚本中提取对象时,列表将作为单个大文本字符串存储在my_list的第一个元素中,而不是我想要的列表中。我做错了什么?

# snippet of code from the script with the HTML
my_list = ['string1', 'string2', 'string3]
print '<form name="input" action="my_script.py">'
print '<input type="hidden" name="my_list" value="%s">' % (my_list,)
print '<input type="submit" name="submit" value="Submit" />'
print "</form>"

# snippet of code from my_script.py
my_list = form.getlist('my_list')

# what I'm seeing in my_script.py
>>>print my_list
["['string1', 'string2', 'string3']"]

感谢您的建议。

2 个答案:

答案 0 :(得分:1)

您需要将列表作为一组具有相同名称的input发送给getlist以获取元素:

my_list = ['string1', 'string2', 'string3']
print '<form name="input" action="my_script.py">'
for element in my_list:
    print '<input type="hidden" name="my_list" value="%s">' % (cgi.escape(element),)
print '<input type="submit" name="submit" value="Submit" />'
print "</form>"

答案 1 :(得分:1)

通过CGI发送它会将列表变成一个字符串。

要将其转换回来使用:

import ast

my_list = "['string1', 'string2', 'string3']"
my_new_list = ast.literal_eval(my_list)
print my_new_list