Разбор массива входного HTML в Python (GAE) - PullRequest
0 голосов
/ 30 июля 2011

Я два дня в Python и GAE, заранее спасибо за помощь.

У меня есть входной массив в HTML, например:

<input type="text" name="p_item[]">
<input type="text" name="p_item[]">
<input type="text" name="p_item[]">

Я хочу разобратьввод в Python, и я пытаюсь это, что не работает:

items = self.request.get('p_item')
for n in range(1,len(items)):
  self.response.out.write('Item '+n+': '+items[n])

Как правильно это сделать?

Ответы [ 2 ]

4 голосов
/ 30 июля 2011

Измените html на этот

<input type="text" name="p_item">
<input type="text" name="p_item">
<input type="text" name="p_item">

и используйте метод self.request.get_all () http://code.google.com/appengine/docs/python/tools/webapp/requestclass.html#Request_get_all

ps Для справки, для GET / не существует концепции массивовПо данным POST, ваша форма преобразуется в строку ключ = значение, разделенную символом '&', например,

p_item=1&p_item=3&p_item=15

и т. Д. Веб-каркас должен интерпретировать, является ли параметр массивом.

Редактировать: упс, просто прочитайте комментарии, которые вы уже поняли, о, хорошо: P

0 голосов
/ 30 июля 2011

Я бы порекомендовал выполнить некоторую отладку, если возникнет такая проблема. Упростите вещи и запишите значения переменных и убедитесь, что вы получаете то, что ожидаете на каждом этапе. Сделайте что-то вроде следующего:

<form method="get">
   <input type="text" name="single_key" />
   <input type="text" name="array_key[some_key]" />
   <input type="submit" />
</form>

И посмотрите, что происходит при запуске следующего Python на сервере:

single_value = self.request.get('single_key')
self.response.out.write(str(single_value))

array_value = self.request.get('array_key')
self.response.out.write(str(array_value))

Основываясь на результатах, вы должны иметь лучшее представление о том, что получить желаемые результаты или как добавить больше деталей к вашему вопросу, если вы все еще не понимаете определенного поведения.

...