Many thanks Jonathan. That did the trick. Thank you to everyone who helped out
S On Friday, March 30, 2012 3:01:58 AM UTC+1, Anthony wrote: > > Thanks for the correction. I guess my version allows you to eliminate the > app, controller, and function, but doesn't allow anything else in the url > in that case. > > Anthony > > On Thursday, March 29, 2012 8:34:19 PM UTC-4, Jonathan Lundell wrote: >> >> On Mar 29, 2012, at 11:33 AM, Simon Bushell wrote: >> > This is a neat solution Anthony (actually, it was my original idea for >> solving this). however I seem to be getting the same error: invalid >> function (default/tcgata). >> > >> > Forgive me, is this code in the root-level routes.py? or a routes.py in >> applications/shortener? >> > >> > Should anything else be in routes.py? >> >> If I'm remembering this correctly, you want something like this (root >> level is fine): >> >> routers = dict( >> BASE = dict( >> default_application = 'shortener', >> ), >> shortener = dict( >> default_controller = 'default', >> default_function = 'index', >> functions = ['index', 'user', 'download', 'call'], >> ), >> ) >> >> ...where the functions list is a complete list of the visible functions >> in the default controller (that is, any function that can appear in a URL). >> >> The router needs that list so it can distinguish function names from >> args, and can then omit 'index'. Since in your example tcgata is not in the >> functions list, it can be safely treated as args[0]. >> >> >> > >> > S >> > >> > >> > >> > On Thursday, March 29, 2012 6:40:09 PM UTC+1, Anthony wrote: >> > routes_in = ( >> > (r'^/?$', r'/app_name/default/index'), >> > (r'^/(?P<url>[^/]*)/?$', >> r'/app_name/default/index/\g<url>'), >> > ) >> > >> > >> > in your root-level routes.py The drawback is that you will lose access >> to all other apps (including admin) but that can be a good thing for public >> deployments. >> > >> > You can catch the other apps by adding route patterns that match them >> before your catch-all pattern (the patterns are processed in order, and the >> first match is used). Anyway, using the parametric router and specifying >> the url-shortening app as the default app might be simpler: >> > >> > routers = dict( >> > BASE = dict( >> > default_application = 'shortener', >> > default_controller = 'default', >> > default_function = 'index', >> > ), >> > ) >> > >> > Then http://myapp.com/tcgata will get routed to >> http://myapp.com/shortener/default/index/tcgata, and "tcgata" will be >> available to the index() function in request.args(0). >> > >> >> >>

