Mako

如果你迄今使用 Mako 并且想要转换到 Jinja2 ,你可以把 Jinja2 配置成 Mako 一样:

  1. env = Environment('<%', '%>', '${', '}', '%')

环境配置成这样后, Jinja2 应该可以解释一个 Mako 模板的小型子集。 Jinja2 不支持嵌入 Python 代码,所以你可能需要把它们移出模板。 def 的语法(在 Jinja2 中 def被叫做宏)并且模板继承也是不同的。下面的 Mako 模板:

  1. <%inherit file="layout.html" />
  2. <%def name="title()">Page Title</%def>
  3. <ul>
  4. % for item in list:
  5. <li>${item}</li>
  6. % endfor
  7. </ul>

在以上配置的 Jinja2 中看起来是这样:

  1. <% extends "layout.html" %>
  2. <% block title %>Page Title<% endblock %>
  3. <% block body %>
  4. <ul>
  5. % for item in list:
  6. <li>${item}</li>
  7. % endfor
  8. </ul>
  9. <% endblock %>