[Twisted-web] Chatola broken / bug in Athena?

kgi iacovou at gmail.com
Fri Jul 13 08:32:39 EDT 2007

On Thursday 12 July 2007 07:58:30 glyph at divmod.com wrote:
> Any updates you would like to make to the athena and nevow wiki pages
> would be appreciated.  They are sorely in need of some maintenance,
> whether they mention this *particular* fact or not :).

Glyph, I thought I'd mention that I spent a few hours yesterday and today 
creating a few new introductory Nevow pages on trac:


I know the names aren't inspired, but I guess the content can always be moved 

The motivation was really that whenever I haven't done any Nevow for a while I 
often find that I've forgotten how to do a particular basic thing; I wanted a 
set of clean, small pages to get me back up to speed.

I thought I might as well go the extra mile and make it simpler with complete 
cut-and-pasteable, runnable examples. The emphasis is therefore on working 
code with a quick summary of "things to note" at the bottom.

One of the things I found when I was originally learning about Nevow is that 
the documentation tended to focus on the "Oooh! Cool Features!" aspect before 
the basics had even been covered.

For example, the document nevow-intro.txt talks about XML on-disk templates, 
data/render methods, Stan, formless, webform and Athena. Now, I'm not saying 
that it's a worthless document; far from it: it's a valuable reference, but 
it doesn't live up to what it's billed as: "An introductory guide covering 
Nevow basics".

I'd like some feedback on the style and the level at which it's pitched. I'd 
also like to know if there are some techniques that are plain wrong in modern 
Nevow. If it's generally liked, I'll try and do some more on Nevow and a few 
on Athena.

Lastly, I've got a few questions that popped up while I was writing these 

1. Is it possible to have a root resource that has an overridden locateChild() 
method AND can render its own content?

If I examine the segments for ('',) to trap the '/' URL and return self from 
locateChild(), then locateChild() simply gets called again and recursion sets 
in (in other words, self.docFactory is never examined).

If I examine the segments for ('',) and return *another( page object, that is 
mostly satisfactory, but I still need another class definition;

I found a mention somewhere that defining 'child_()' somewhere would handle 
the '/' resource. However, that would only work if I didn't override 
locateChild(), since it's locateChild() that actually does all the child 
lookups, in which case I'd lose the flexibility of locateChild().

2. What is the blessed, current, best way of performing a URL redirect? I have 
found several methods on the ML and in the codebase and I'd like a definitive 



More information about the Twisted-web mailing list