> > ... in router.example.py? In my case default_application = 'init', > default_controller = 'default' and default_function = 'index' What do you > mean by 'and specify the list of available functions in the default router' > . My application contains 15 controllers and almost 100 functions, do I > have to list them all in functions = '' or do I have to just list the > functions in default_controller = 'default', controllers = 'DEFAULT', >
Instead of functions=None, do functions=['index', 'func1', 'func2'] # list all the functions in the default controller When the router sees /code/shortname, it will know "code" is not a controller and also not one of the functions in the default controller, and it will therefore assume it is an arg. > then in http://yourdomain.com/code/shortname, code and shortname will be >> interpreted as request.args[1:2], with the request being routed to the >> default app, controller, and function. > > > In my case init/default/index which implies that in the index function I > have to do something like: > > > def index(): > if request.args(0)==code: > > row=db(db.auth_user.shortname==request.args(1)).select(db.auth_user.nodeID).first() > > account=db(db.NodeAccount.nodeID==row.nodeID).select(db.NodeAccount.accountID).first() > if account.accountID==BASICACCOUNTID: > redirect(URL('vcard',args=row.nodeID)) > elif account.accountID==ADVANCEDACCOUNTID: > redirect(URL('site','index',args=row.nodeID)) > elif account.accountID==HUBACCOUNTID: > redirect(URL('hub','index',args=row.nodeID)) > else: > return dict() > Yes, though technically you don't have to do it in the index function. Instead, in a model file, you could do: if request.controller == 'default' and request.function == 'index' andrequest .args(0) == 'code': [check the db and do a redirect] Anthony