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!