## page was renamed from TemplatingSystems ## page was renamed from PresentationTechnologies #pragma section-numbers off == Data on the web == There are several approaches to represent data using Python on a web page (see WebProgramming). * PythonInWebPage * StructureAnnotation * [[Programmatic]] Another interesting article about this is [[http://www.perl.com/pub/a/2001/08/21/templating.html|"Choosing a Templating System"]]. === Syntax === Different approaches lead to different design decisions. Often it is the principal reason that new template systems get invented: * ElementBasedSyntax * CommentBasedSyntax * AttributeBasedSyntax === 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 ==== * ClearSilver * DOMTemplate (from TwistedMatrix) * DTML (Document Template Markup Language - see [[Zope]]) * [[http://www.twistedmatrix.com/documents/howto/woven|Woven]] (from TwistedMatrix) * 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.