Mako is a template library written in Python. It provides a familiar, non-XML syntax which compiles into Python modules for maximum performance. Mako's syntax and API borrows from the best ideas of many others, including Django and Jinja2 templates, Cheetah, Myghty, and Genshi. Conceptually, Mako is an embedded Python (i.e. Python Server Page) language, which refines the familiar ideas of componentized layout and inheritance to produce one of the most straightforward and flexible models available, while also maintaining close ties to Python calling and scoping semantics.
Mako is used by reddit.com where it delivers over one billion page views per month. It is the default template language included with the Pylons and Pyramid web frameworks.
<%inherit file="base.html"/> <% rows = [[v for v in range(0,10)] for row in range(0,10)] %> <table> % for row in rows: ${makerow(row)} % endfor </table> <%def name="makerow(row)"> <tr> % for name in row: <td>${name}</td>\ % endfor </tr> </%def>
Python is a great scripting language. Don't reinvent the wheel...your templates can handle it !
from mako.template import Template print(Template("hello ${data}!").render(data="world"))For filesystem management and template caching, add the TemplateLookup class.
<%def>
tag provides Python def
semantics, whereas the <%block>
tag behaves more like a
Jinja2 content block.<%block>
or
<%def>
.To get started, visit the documentation and the download page.
Mako is covered by the MIT License.