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).
>> > 
>>
>>
>>

Reply via email to