[Twisted-web] Add segmentsResolved method to inevow.IResource
Matt Goodall
matt at pollenation.net
Thu Sep 9 17:53:20 MDT 2004
Please ignore the last message, I hit send by accident.
On Wed, 2004-09-08 at 16:59 -0400, James Y Knight wrote:
> On Sep 8, 2004, at 7:05 AM, Matt Goodall wrote:
> > I propose that we add one more method to the IResource API - a "hook"
> > method that is called when the final segment has been located, i.e.
> > there are no more path segments to process. The IResource definition of
> > the method would look something like:
> >
> > def segmentsResolved(self, ctx):
> > pass
>
> Why is this different/easier to support/cleaner than returning a
> resource from renderHTTP?
Because the method would be part of the resource location process and
nothing to do with rendering. It's supposed to return a resource whereas
renderHTTP is supposed to render the page.
After a little more thought, a better name might be something like
finalizeLocateChild and it should probably always return a resource, not
None.
>
> Instead of:
> C1.locateChild, C2.locateChild, C2.renderHTTP, C3.renderHTTP
> we'll have:
> C1.locateChild, C2.locateChild, C2.segmentsResolved,
> C3.segmentsResolved, C3.renderHTTP.
>
> I don't see why that's a big difference?
I'm not really talking about t.web/Nevow, I'm talking about application
code where clarity is important. Personally, I don't think returning a
resource from renderHTTP makes much sense. Nevow's just located the resource
and asked the resource to render itself, only it doesn't and returns a
new resource instead.
The problem with this is that it adds a new method to a wonderfully simply
interface and in the vast majority of cases the method would just
"return self". That puts me off the idea somewhat.
Cheers, Matt
More information about the Twisted-web
mailing list