Пирамиды route_url с дополнительными аргументами запроса

В структуре Pyramids функции route_path и route_url используются для генерации URL-адресов из конфигурации маршрутов. Итак, если у меня есть маршрут:

config.add_route('idea', 'ideas/{idea}')

Я могу создать для него URL-адрес, используя

request.route_url('idea', idea="great");

Однако иногда я могу добавить дополнительные параметры get для генерации URL-адреса, например:

idea/great?sort=asc

Как это сделать?

Я пробовал

request.route_url('idea', idea='great', sort='asc')

Но это не сработало.

Ответ 1

Вы можете добавить дополнительные аргументы запроса для URL-адреса, передающего словарь _query

request.route_url('idea', idea='great', _query={'sort':'asc'})

Ответ 2

Если вы используете шаблоны Мако, _query={...} не будет работать; вам нужно сделать:

${request.route_url('idea', idea='great', _query=(('sort', 'asc'),))}

Кортеж из 2-кортежей работает как словарь.