The _default and _lookup methods are explained here: http://turbogears.readthedocs.org/en/latest/turbogears/objectdispatch.html The difference is basically that _default returns a "page" like normal @expose'd methods, whereas _lookup returns a new controller object where the dispatching process continues.
> Michael Pedersen <[email protected]> hat am 9. Juli 2015 um 13:09 > geschrieben: > > > This comes down to a misunderstanding of what happens with the / character > in URLs and how to use _lookup. I don't know that I have good examples for > how to use _lookup, so I can't help there, but the other part I can explain: > > TG separates the URL based on the / character. It goes to the top most > controller (RootController), and says "Do you know how to handle /media". > The RootController has a MediaController named "media", so it goes to that > controller and asks about the next item: news. Since that controller has a > NewsController named "news", it goes to the NewsController and asks it how > to handle the next part. > > You have a method named index, so whenever the next part is named "index", > it passes everything to that method. That covers "/index/<value-of-param>" > and "index?url=<value-of-param>". If there is nothing after the final / TG > assumes you want to get the index method called, so uses that method. That > covers "news/" and even "news?url=<value-of-param>" since there's a hidden > / between "news" and "?url=" (that's how TG interprets it). > > The final one, though, doesn't cover any of these cases. > "news/<value-of-param>" doesn't actually match anything. NewsController is > asked "do you have any attribute named <value-of-param>" and it doesn't, so > it can't process it. It returns a 404. What you would need to do is add a > method named _lookup() that would then tell TG that the index method knows > how to handle <value-of-param>. > > As I said, I don't have examples to share for this right now, so I can't do > much to give code. I'm sorry. But at least this provides an explanation for > what to do next. > > On Tue, Jul 7, 2015 at 2:08 PM Raj <[email protected]> wrote: > > > Hi, > > I have a TG app with following *controllers*: > > > > - RootController > > - MediaController > > - News Controller > > > > In the RootController i have added subcontroller as *media* > > =MediaController() > > In MediaController i have added *news*=NewsController() > > > > NewsController is having an index() method with a parameter named 'url' > > > > The NewsController()->index() page is displaying when the following URLs > > are invoked > > > > - http://localhost:8080/media/news/ > > - http://localhost:8080/media/news/index*/<value-of-url-param>* > > - http://localhost:8080/media/news/index*?url=<value-of-url-param>* > > - http://localhost:8080/media/news*?url=<value-of-url-param>* > > > > But the following URL shows a* 404 error* > > > > - http://localhost:8080/media/news*/<value-of-url-param>* > > > > I am expecting *this should display the same result* as of the URL > > http://localhost:8080/media/news*/index/<value-of-url-param>* > > What is happening while removing *index *from URL? > > > > What is the solution? > > > > Regards, > > Raj > > > > -- > > You received this message because you are subscribed to the Google Groups > > "TurboGears" group. > > To unsubscribe from this group and stop receiving emails from it, send an > > email to [email protected]. > > To post to this group, send email to [email protected]. > > Visit this group at http://groups.google.com/group/turbogears. > > For more options, visit https://groups.google.com/d/optout. > > > > -- > You received this message because you are subscribed to the Google Groups > "TurboGears" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/turbogears. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "TurboGears" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/turbogears. For more options, visit https://groups.google.com/d/optout.

