2013-08-10 1 views
2

Я пишу python webapp (в Google AppEngine, используя webob), который должен обрабатывать форму, содержащую список адресов.Анализ данных POST, содержащих квадратные скобки в Python?

Для упрощения, предположим, что форма содержит следующие входы:

<input type="hidden" name="address[]" value="1" /> 
    <input type="hidden" name="address[]" value="2" /> 
    <input type="hidden" name="address[]" value="3" /> 
    <input type="hidden" name="address[]" value="4" /> 

Теперь Rails \ PHP будет разобрать это единственное значение «адрес», содержащий [1,2,3,4] список. Есть ли простой способ сделать это в Python?

+0

http://docs.webob.org/en/latest/reference.html#query-post-variables – msw

ответ

0

из метода RequestHandler, self.request.params.getall('address[]') вернет список значений. [] Не имеет никакого значения, хотя поля можно так же легко назвать «адресом».

+0

'[]' - это PHP-ism, который я бы хотел, чтобы люди перестали использовать. –

+1

@ DanielRoseman почему? – arikfr

+0

Пожалуйста, не используйте 'self.request.params'. '.params' также может содержать значения из строки запроса, что может привести к злоупотреблениям/уязвимости XSS. –

0

WebOb использует что-то, называемое MultiDict. self.request.POST запросит надлежащим образом запрограммированный запрос и возвращает MultiDict.

С помощью этого MultiDict вы можете позвонить по телефону .getall() с указанием имени ключа, в этом случае ваш ключ будет «address []».

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

self.request.POST.getall('address[]') 

Не требуется использовать address[] как имя, как MultiDict не использовать, чтобы определить, может ли ключ существовать несколько раз или нет ,