Web Templating Battle¶
Ivan Teoh (PretaWeb - government CMS provider)
Comparing 5 Python web templating systems
Intro¶
Web templates - separating presentation from content
5 to be reviewed:
- Django
- Chameleon
- Jinja2
- Diazo and XSLT
- Mako
Django templating¶
Text based
Customisation in Python code
Separate variable interpolation syntax ({{
, }}
) and tag syntax
({%
, %}
)
Also have filters etc
Django-specific
Chameleon¶
HTML/XML based
Compiles to Python bytecode
Language is “page templates”, originally from Zope
Python is the default expression langage
Used with Pyramid, Zope, Plone, Grok, standalone
Commands embedded into HTML attributes. Also allows arbitrary Python snippets in 2.0
Diazo and XSLT¶
XML rules files
Combines web designer template with developer backend
Uses CSS classes and XSLT to drive the transforms
Various directives identify the pieces (e.g. identifying the theme file)
No looping constructs, just use XSLT
From Plone 4.2 (this came up in the Q&A)
Mako¶
Embeds Python directly in the template (i.e. Python server pages)
Uses <%
, %>
to identify code blocks
Q & A¶
5 chosen are under active development
Diazo seemed very complicated relative to others. Designed to support a drag-and-drop theme designer for use by CMS clients. Still a little complicated to use from the developer side to set it up.
My Thoughts¶
Reasonable overview, but hard to get into any detail in 25 minutes.
Would have been nice to have explicit pros/cons for each one.