On Mon, Apr 15, 2013 at 1:22 PM, Donald Stufft <don...@stufft.io> wrote:
> > On Apr 15, 2013, at 1:16 PM, Alex Ogier <alex.og...@gmail.com> wrote: > > The problem I have with fallthrough-based dispatch is that it encourages > really expensive performance-killing patterns, where you end up doing a > linear scan over view functions round-tripping to the database for each one > to see if the view can handle the request. multiurl is sort of nice because > it least it's obvious that what it's doing might be expensive, and the > whole linear scan is collected in one place so if it gets too long it looks > "wrong" in a Joel Spolsky sense. > > > I don't see how including the method in the resolution scheme equates to > hitting the database. > Oh sorry, I wasn't totally clear. I am advocating a system where people are encouraged to make intelligent dispatch decisions like this one early in the routing framework *instead* of with a try-catch-fallthrough pattern. Anything that lets you avoid doing extra work through a little up-front intelligence is a plus in my book, and I think it's a shame that there aren't really any good hooks to make these kinds of intelligent decisions in the routing framework. django-multiurl has already done a lot of the heavy lifting to make multiple URLs for the same regex work in a clean way outside of core, but it uses this onerous pattern of calling views and expecting them to fail in a specific way. So I am proposing that it could easily be made to have all the right hooks to make arbitrary intelligent routing decisions. I think we're on the same side here, except that you want this in core. Best, Alex Ogier -- You received this message because you are subscribed to the Google Groups "Django developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-developers+unsubscr...@googlegroups.com. To post to this group, send email to django-developers@googlegroups.com. Visit this group at http://groups.google.com/group/django-developers?hl=en. For more options, visit https://groups.google.com/groups/opt_out.