On Jun 11, 2005, at 1:37 AM, Cliff Wells wrote:
Hi,
I just started playing with Nevow yesterday, and I've got a question.
<snip> That all looks pretty good; you have more Python code than your PHP code, but that's because you check for more and it has more capability. This is the whole point of nevow; if you need to do something custom, you write some python code. And it's easy to share between pages, too. However, here are a few suggestions:
if os.path.exists(filename): fragClass = rend.Fragment fragClass.docFactory = loaders.xmlfile(filename, ignoreDocType=True)
This is weird and unnecessary. Fragment takes a docFactory argument for a reason. So, do this instead: frag = Fragment(docFactory=loaders.xmlfile(filename, ignoreDocType=True))
ctx.tag.fillSlots(ctx.tag.attributes.get('slot'), fragClass()) return ctx.tag
This is also pretty weird. I'm not understanding what the extra slot is giving you. If it were me, I would just "return frag" here and dispense with the slot in the template as well as the slot-filling.
else: return "Page not found."
index.html: ----------- <div id="content"> <nevow:invisible nevow:render="include" variable="page" slot="content"> <nevow:slot name="content" />
See comment above, I think this slot is extraneous...
</nevow:invisible> </div>
This allows me to either specify the included file by accessing a GET/POST variable:
<nevow:invisible nevow:render="include" variable="page" slot="content">
Neat!
or directly specify the template like:
<nevow:invisible nevow:render="include" file="home" slot="content">
Cool.
This all seems to work just fine. However, now I'm curious if there is a better/more direct way of achieving this.
If it works for you, it works. :-) Again, the point of Nevow is to make it really easy for you to write Python code that does what you want it to do. dp