Найти - Пользователи
Полная версия: Pyramid: Парметры запроса в виде массива
Начало » Pyramid / Pylons / TurboGears » Pyramid: Парметры запроса в виде массива
1 2
sank
В PHP есть чудесная фишечка для ленивых - возможность передать в параметрах запроса массив с указанными элеменами и получить их в виде массива. Без дополнительного кодирования. Есть ли такое в пирамиде?

Другими словами - вот я даю такой запрос пирамиде:
http://.../test?var[1]=10&var[3]=40&var[14]=100500
Можно ли штатными средствами пирамиды получить из этого такой словарик (или любой объект, массив там …):
{1: 10, 3: 40, 14: 100500}
FishHook
Это называется GET и он является стандартным методом передачи данных в протоколе http и собственно язык программирования или фреймворк тут совершенно не при чем.
ЕМНИП в пирамиде
 def __init__(self,request):
   request.GET
даст словарь GET-запроса
appetito
фиш, он другое имел ввиду

если:
http://.../test?var=10&var=40&var=100500
тогда:
...
request.GET.getall('var')
>>> [u'10', u'40', u'100500']
sank
Да, appetito, вы совершенно правы, я это имел в виду, но хотелось бы чуть функциональней.
С getall() всё понятно. Просто для способа с getall, если на серваке не парсить отдельно переменные, то нужно отдельно передавать массив переменных, которые за индексацию отвечают. Т.е. нужно передать в адресе так:
http://.../test?var=10&var=40&var=100500&vid=1&vid=3&vid=14
Потом отдельно обработать массив vid и потом уже сопоставить индексы для var.

Ещё вариант - передать описанную в начальном посте строку, отдельно пробежаться по параметрам, сформировать массив в виде {1: 10, 3: 40, 14: 100500} и потом его юзать.

Вот если бы была возможность вообще этот момент не кодить, код получился бы красивей
bismigalis
sank
Есть ли такое в пирамиде?

нет.

https://groups.google.com/d/topic/pylons-discuss/gEgPkX-6bbo/discussion
PooH
Многие для сериализации/десериализации/валидации в pyramid используют Colander он умеет и это и гораздо большее.
sank
В общем проблема лени свелась к такому решению:
Переменные передаю так:
http://.../test?var=10&var=40&var=100500&vid=1&vid=3&vid=14
словарик из этого делаю так:
d = dict(zip(request.params.getall("vid"), request.params.getall("var")))
Вуаля, одна строчка
ZZZ

Не красивое решение. Лучше бы передал var_1=10&var_3=40&var_14=100500, перебрал бы весь GET и и по startswith('var_) вытащил нужные ключики. А то получился какой-то однострочный костыль...

sank
Ну тут на любителя …
В вашем варианте больше кода, больше процессору работать, код менее читабельный. Зато меньше битиков по сети гонится.
Мне вот мой как-то красивей кажется
ZZZ

Процессорное время сегодня стоит гораздо меньше времени программиста, который будет это поддерживать.

This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB