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 Jinja2 ------ text based (syntax very similar to Django templates) compiles down to Python bytecode 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 Summary ------- No real battle, no real winner Driven by different use cases & history 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.