Thanks Anthony and Jonathan. It works!
It would be nice to have this routing documentation updated in the online 
book.


On Monday, July 9, 2012 10:58:22 PM UTC+1, Jonathan Lundell wrote:
>
> On 9 Jul 2012, at 1:29 PM, Francisco Costa wrote:
>
> I'm using the Parameter-based system for routing
>
> In my routes.py I have this
>
>     routers = dict(
>
>         # base router
>         BASE = dict(
>             applications = ['admin', 'app', 'blog'],
>             default_application = 'app',
>             map_hyphen = True,
>             domains = {
>                 'blog.domain.com'   : 'blog',
>                 'domain.com'          : 'app'
>             },
>         ),
>         app = dict(
>             controllers = ['default', 'user'],
>             functions = ['index', 'show', 'list'],
>             default_controller = 'default',
>             default_function = dict(default='index', user='show')
>         ),
>         blog = dict(
>             default_controller = 'default',
>         ),
>     )
>
>
> When I go to http://localhost/user/john i get this: "invalid function 
> (user/john)"
>
> I would like it to map it to http://localhost/user/show/john
>
> So it is possible to pass args to a default function in a non default 
> controller without the name of the function?
>
>
> Try specifying functions as a dict of lists keyed by controller names, and 
> include and entry for user. Something like
>
> app = dict( 
> ...
> functions = dict(
> default = [ list of functions],
> user = [ list of functions ],
> ).
> ...
>
> One other thing to pay attention to is that by default there's a function 
> app/default/user that manages your auth object. The router will do the 
> right thing, but there may be some omissions that it won't be able to do 
> because the conflict creates an ambiguity. In particular, the router can 
> normally shorten /app/default/user/whatever to /user/whatever, but it can't 
> do that if you have a function named user.
>
> You can work around that by renaming your controller, or by renaming the 
> auth-support function and telling Auth: auth = Auth(... 
> function='somethingotherthanuser'...)
>

Reply via email to