У меня есть форма с несколькими полями выбора. Работает методом GET
. Пример параметров запроса, сгенерированных формой:
action=not-strummed&action=not-rewarded&keywords=test&page=2
Обратите внимание, что есть два параметра «действие». Это происходит из-за множественного выбора.
Я хочу сделать следующее:
- Сделать дикт из параметров
- Удалить ключ «страница» из диктофона
- Преобразование dict в строку параметров
urllib.urlencode()
недостаточно умен, чтобы генерировать параметры URL из списка.
Например:
{
"action": [u"not-strummed", u"not-rewarded"]
}
urllib.urlencode() преобразует этот dict как:
action=%5Bu%27not-strummed%27%2C+u%27not-rewarded%27%5D
Это совершенно неправильно и бесполезно.
Вот почему я написал этот итерационный код для повторной генерации параметров URL.
parameters_dict = dict(self.request.GET.iterlists()) parameters_dict.pop("page", None) pagination_parameters = "" for key, value_list in parameters_dict.iteritems(): for value in value_list: pagination_item = "&%(key)s=%(value)s" % ({ "key": key, "value": value, }) pagination_parameters += pagination_item
Это работает хорошо. Но он не охватывает все возможности и определенно не очень пифоничен.
У вас есть лучшая (более питоническая) идея для создания параметров URL из списка?
Спасибо