通过CGI发送时,Python列表对象变为文本字符串
我有一个列表对象,我想通过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 个回答
1
通过CGI发送这个列表会把它变成一个字符串。
要把它转换回来,可以使用:
import ast
my_list = "['string1', 'string2', 'string3']"
my_new_list = ast.literal_eval(my_list)
print my_new_list
1
你需要把这个列表作为一组不同的 input
发送,而且这些 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>"