我有一个列表对象,我正在使用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']"]
感谢您的建议。
答案 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