Объект списка Python поступает в виде текстовой строки при отправке через CGI - PullRequest
0 голосов
/ 13 сентября 2011

У меня есть объект списка, который я отправляю в скрипт с использованием 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 голос
/ 13 сентября 2011

Отправка через CGI превратит список в строку.

Чтобы преобразовать его обратно, используйте:

import ast

my_list = "['string1', 'string2', 'string3']"
my_new_list = ast.literal_eval(my_list)
print my_new_list 
1 голос
/ 13 сентября 2011

Вам нужно отправить список в виде набора разных 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>"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...