Hi Chris, Thank you for your amazingly fast response.
Indeed your example works as described. After digging deeper I figured that my problem is caused by adding the "root" route to the configure.zcml: <route path="" name="root" view=".views.root_view" /> Everything else is identical to your example and "root_view" is a copy of "my_view" from your previous email. When I add the root route the routes, I get either "/" or "/buckets" for both routes depending on their order configure.zcml. Thank you. -- Stephan Chris McDonough wrote: > On 6/3/09 10:29 AM, Stephan Altmueller wrote: >> Hi >> >> It seems that "model_url" does not work correctly with routes that >> do not contain dynamic parts. This worked in 0.7.x but not 0.8 and 0.9. >> >> Could someone tell if/what I am doing wrong. >> >> Here is my routes definition in configure.zcml: >> >> >> <route path="buckets" >> factory=".models.get_buckets_context" >> view=".views.buckets_view" >> name="allbuckets" /> >> >> and here is the relevant portion of the of the view code: >> >> def buckets_view(context, request): >> context_url = model_url(context, request) >> >> >> I expected that "context_url" would be "/buckets" after the call to >> model_url but it's "/". >> Other routes that I am using that have a dynamic part work just fine. >> >> Any pointer is appreciated. > > Hmm. I can't replicate this. > > When I have a "bfg_starter" created project and I change the configure.zcml > to > looks like so: > > <configure xmlns="http://namespaces.repoze.org/bfg"> > > <!-- this must be included for the view declarations to work --> > <include package="repoze.bfg.includes" /> > > <route > path="buckets" > view=".views.my_view" > name="buckets" > factory=".models.SomeFactory" > /> > > <view > for=".models.MyModel" > view=".views.static_view" > name="static" > /> > > </configure> > ... and I change its views.py to looks like so: > > from repoze.bfg.chameleon_zpt import render_template_to_response > from repoze.bfg.view import static > from repoze.bfg.url import model_url > > static_view = static('templates/static') > > def my_view(context, request): > print model_url(context, request) > return render_template_to_response('templates/mytemplate.pt', > request = request, > project = 'routes_stephan') > > . and I change models.py to look like so: > > class MyModel(object): > pass > > root = MyModel() > > def get_root(environ): > return root > > class SomeFactory(dict): > pass > > > When I visit http://localhost:6543/buckets, I see printed to my console > "/buckets": > > [chr...@vitaminf routes_stephan]$ ../bin/paster serve routes_stephan.ini > Starting server in PID 73064. > serving on 0.0.0.0:6543 view at http://127.0.0.1:6543 > /buckets _______________________________________________ Repoze-dev mailing list Repoze-dev@lists.repoze.org http://lists.repoze.org/listinfo/repoze-dev