On Tue, Jul 21, 2009 at 2:55 PM, The Devil's
Programmer<[email protected]> wrote:
>
> For the sake of simplicity, let's say my site is accessible through /
> test/
>
> Now what if I also want an optional page parameter like /test/page6 ?
>
> For that, I set up this route:
>
> map.connect('/test/page:page', controller='test', action='test',
> page=1)
>
> Sadly, this only works if I include the page parameter.
>
> I have read through the routes documentation many times (which is
> quite small) and tried a bunch of different configurations, but I
> cannot seem to find a way to make the page parameter optional.
>
> Somebody put me out of my misery, please :) This has already consumed
> more time than I'd like to admit.

For an optional component you'd define two routes.  (Or enable
minimization but that is error-prone.)  I'm also not sure about
matching a partial URL component rather than an entire component,
although I guess it might be OK.

map.connect("/test", controller="test", action="test", page=1)
map.connect("/test/{page}", controller="test", action="test")

This would match:

    /test  ->  test(page=1)
    /test/2  ->  test(page="2")

It may be more REST-ly correct to do something like this:

map.connect("/test/pages/{page}", controller="test", action="test")

And then make /test redirect to /test/pages/1.

map.redirect("/test", "/test/pages/1")

You could also make page a query parameter, in which case it would be
outside the routing system.

map.connect("/test", controller="test", action="test")
    /test?page=2
    def test(self):
        page = request.params.get("page", 1)
        page = int(page)   # Raises ValueError

-- 
Mike Orr <[email protected]>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"pylons-discuss" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/pylons-discuss?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to