The discussion on raising an exception has was done in
https://github.com/Pylons/pyramid/issues/611 and its subsequent pull
requests https://github.com/Pylons/pyramid/pull/1101 and
https://github.com/Pylons/pyramid/pull/1103. The issue had to do with the
contract defined by route_path, in that it's expected to return a path.


On Sun, Oct 6, 2013 at 4:03 PM, Harvey Smith <hlwsm...@gmail.com> wrote:

> On Sunday, October 6, 2013 4:09:55 PM UTC-4, Mike Orr wrote:
>
> On Sat, Oct 5, 2013 at 12:00 AM, Harvey Smith <hlws...@gmail.com> wrote:
>> > Currently in Pyramid v1.5a2 one cannot easily loop over a list of
>> routes to
>> > generate the URLs (for example to generate a nav menu) if some of the
>> routes
>> > are external and one wished to use URL paths instead of qualified URLs
>> > (easier to server through proxies.)  This is because
>> Request.route_path()
>> > will raise an exception when called with an external route.
>> >
>> > Since external routes must contain the qualified URL by definition, it
>> would
>> > be more convenient if Request.route_path() just returned the qualified
>> URL
>> > instead of an exception in these cases. In other words
>> Request.route_path()
>> > should prefer to return URL paths when possible, but not bail out when
>> it's
>> > not.
>> >
>> > Or will this cause some evil side effects I am missing?
>>
>> That could go either way. I normally use route_path() but if I were
>> generating an external URL I'd probably call route_url() to make it
>> clear. On the other hand, I don't see anything wrong with route_path()
>> returning a fully-qualified external URL because an unqualified URL is
>> meaningless in that case.
>>
>> I'm not sure if we should support looping through routes though; that
>> sounds fragile. You'd have to know something about the routes to know
>> if each one was suitable for the menu, and if the routes require
>> parameters you wouldn't be able to generate them without the
>> parameters.
>>
>
> In general I avoid hardcoding URLs into the templates. I generate them
> from the routes I've declared in the main __init__.py file, this way
> if/when a URL changes I can simply change it once in the route
> declaration. In the layout template I generate the main navigation menu by
> looping through the routes.  I know what the routes are of course but
> I don't know the current route so this is tested for in the loop in
> order to set the css class in the html tag appropriately. I realize
> there are other ways to solve this problem (using JavaScript perhaps)
> but I've been doing it this way for years (from back with Pylons.)
>
> Now because I generate all my URLs in the templates I use the URL
> generation features of Akhet <https://github.com/Pylons/akhet> (
> https://github.com/Pylons/akhet) because they
> are shorter and fit my philosophy. I have already submitted a pull
> request to <https://github.com/Pylons/akhet/pull/6>
> Akhet <https://github.com/Pylons/akhet/pull/6> (
> https://github.com/Pylons/akhet/pull/6) which solves my problem
> at the moment for me. I wasn't sure if maybe it should be altered in
> pyramid proper instead though.
>
>  --
> You received this message because you are subscribed to the Google Groups
> "pylons-devel" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to pylons-devel+unsubscr...@googlegroups.com.
> To post to this group, send email to pylons-devel@googlegroups.com.
> Visit this group at http://groups.google.com/group/pylons-devel.
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 
You received this message because you are subscribed to the Google Groups 
"pylons-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to pylons-devel+unsubscr...@googlegroups.com.
To post to this group, send email to pylons-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/pylons-devel.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to