Basic usage
Variable x has content: ${x}
Expression: ${x + 1}
Escaped for HTML: ${x | h}
Control structures
% for x in range(5):
    % if x % 2 == 0:
    ${x} is even!
    % else:
    ${x} is odd!
    % endif
% endfor
Including Python code
<%
    greeting = "Hello world!"
    # arbitrary python code
%>
<%!
# arbitrary python code run at toplevel
# cannot access variables!
def sign_string(number):
    if number > 0:
        return "positive"
    elif number < 0:
        return "negative"
    else:
        return "zero"
%>
Special blocks
<%text filter="h">
    This is a raw block where ${nothing is evaluated}
    <%
        not even this
    %>
    and <html is escaped> too with "h" filter
</%text>
<%def name="myfunc(x)">
    this is a reusable macro, with arguments: ${x}
</%def>
${myfunc(42)}
<%doc>
    this is a comment
</%doc>
Inheritance
shared.html
<html>
  <head>
    <title><%block name="title" /></title>
  </head>
  <body>
    <header><h1><%block name="title" /></h1></header>
    <main>${self.body()}</main>
  </body>
</html>
home.html
<%inherit file="shared.html" />
<%block name="title">Welcome to my site</%block>
This is the body
article.html
<%inherit file="shared.html" />
<%block name="title">${post.title}</%block>
${post.content}
Library
Basic usage
from mako.template import Template
mytemplate = Template("hello, ${name}!")
print(mytemplate.render(name="jack"))
0 Comments for this cheatsheet. Write yours!