Список передачи Python в форму и получение в виде списка - PullRequest
0 голосов
/ 27 ноября 2011

Как лучше всего передать список через форму в python (cgi).

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 через форму и получить их позже.

Спасибо.

Ответы [ 2 ]

3 голосов
/ 27 ноября 2011

Вы можете использовать модуль python cgi . Документация специально охватывает случай, когда у вас есть несколько значений для определенного имени поля.

Основная идея заключается в том, что в 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 голос
/ 03 ноября 2017

На питоне я бы так и сделал.

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