Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pyramids route_url with additional query arguments

In Pyramids framework, functions route_path and route_url are used to generate urls from routes configuration. So, if I have route:

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

I am able to generate the url for it using

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

However, sometimes I may want to add additional get parameters to generate url like:

idea/great?sort=asc

How to do this?

I have tried

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

But that didn't work.

like image 693
Samuel Hapak Avatar asked Aug 16 '12 14:08

Samuel Hapak


2 Answers

You can add additional query arguments to url passing the _query dictionary

request.route_url('idea', idea='great', _query={'sort':'asc'})
like image 127
Samuel Hapak Avatar answered Oct 16 '22 15:10

Samuel Hapak


If you are using Mako templates, _query={...} won't work; instead you need to do:

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

The tuple of 2-tuples works as a dictionary.

like image 37
labreuer Avatar answered Oct 16 '22 13:10

labreuer