Presentation Styles
There are several different styles of presentation technology employed in the various Web application frameworks (see WebProgramming).
- ["Programmatic"]
An interesting article which introduces other useful terminology is [http://www.perl.com/pub/a/2001/08/21/templating.html "Choosing a Templating System"].
Syntax
In the area of syntax, several different design decisions are made alongside the above classifications, and this is often the principal reason that new template systems get invented:
Examples
Some presentation systems fall neatly into the categories above. Others are less easy to classify but have a closer association to one category than the others.
PythonInWebPage
- Castalian
- ["Cheetah"]
- PSP (from ["Webware"])
- ["Spyce"]
StructureAnnotation
- DOMTemplate (from Twisted Matrix)
- DTML (Document Template Markup Language - see ["Zope"])
wt (see JonsPythonModules)
- ZPT (Zope Page Templates - see ["Zope"])
Hybrids
CHTL and CGTL (from CherryPy) - PythonInWebPage and StructureAnnotation
PyMeld - StructureAnnotation and ["Programmatic"]
["STML"] (from SkunkWeb) - PythonInWebPage, StructureAnnotation, and ["Programmatic"] being all equally apt (or equally inadequate)
Programmatic
- PTL (from ["Quixote"])
Notes
Feel free to add more abstract descriptions and more examples to help people decide what they are looking for!
Do you need to use full-fledged python, embedded bits of definitions but no functions -- there is a range of options depending on your problem. Sometimes there's no python in "the output page" -- as in raw documents put thru a filter. Or there may be limited amounts of embedded python -- as in YAPTU and other filters. Or python may be the matrix language, with text embedded within it. Your handler code can be anything from a substituter (using, say, regular expressions to catch things to be altered) to a mini python engine. See [http://pythonjournal.cognizor.com 'Python Journal 3(1)'] a feature article that draws together several of the options above into a series on the pure-text to pure-python "dimension". See what your options are.