aurora00 at gmail.com
Fri Jun 3 06:51:48 CEST 2005
On 6/2/05, Ian Bicking <ianb at colorstudy.com> wrote:
> If there's no code then it's not a presentation layer. It's an HTML
> layer, nothing more, just dumb data. Presentation requires logic.
> From that perspective, I think doing proper model/presentation
> separation using something like HTMLTemplate requires discipline and the
> addition of another Python presentation layer.
Precisely. I find this one of the biggest advantage of HTMLTemplate.
You don't have to learn yet another half baked scripting language to
build the presentation logic. You just use Python.
So how to structure the model/presentation in HTMLTemplate's case?
Here is what I have done:
foo.cgi - application logic
fooView.py - presentation logic
fooView.html - template
fooView would have the presentation logic. It is mainly methods like
renderXXX(). Trust me it is really straightforward. In reality I find
most of my model and view are one-one corresponding. So I even cut
some corner and merged foo.cgi and fooView.py into one file ;-)
Some of you find the callback API a little convoluted or clumsy. After
using it for a while I think I have found the way to work efficiently.
I'm going to get down on some detail here. Hopefully even people never
seen HTMLTemplate can have a glimpse of how it works.
First you parsed the template. The template object have a wonderful
(diagnosis) method called structure(), which dump the view of the
tree. It helps a lot in coding the presentation logic. For example, my
You'll need 3 render methods, one for the root and 2 for each rep node.
In each method, you are going to fill out the child items. For
example, in the main render() method, you should probably fill
Once I discovered the structure() method writing the presentation
logic becomes natural.
Let me cast another perspective to show why I like HTMLTemplate so
much. Cheetah's user guide have about 100 pages. Enhancement and new
features are probably on the way. HTMLTemplate's documentation consist
of one short file & a few examples. That's probably all you'll ever
need. It is finished. No significant enhancement is expected. I think
that says a lot about its conceptual complexity and completeness.
More information about the Web-SIG