Jinja: Python template engine

Jinja logo

http://jinja.pocoo.org/


{% extends "layout.html" %}
{% block body %}
  <ul>
  {% for user in users %}
    <li><a href="{{ user.url }}">{{ user.username }}</a></li>
  {% endfor %}
  </ul>
{% endblock %}

Features (from Jinja website)

  • Sandboxed execution mode. Every aspect of the template execution is monitored and explicitly whitelisted or blacklisted, whatever is preferred. This makes it possible to execute untrusted templates.
  • powerful automatic HTML escaping system for cross site scripting prevention.
  • Template inheritance makes it possible to use the same or a similar layout for all templates.
  • High performance with just in time compilation to Python bytecode. Jinja2 will translate your template sources on first load into Python bytecode for best runtime performance.
  • Optional ahead-of-time compilation
  • Easy to debug with a debug system that integrates template compile and runtime errors into the standard Python traceback system.
  • Configurable syntax. For instance you can reconfigure Jinja2 to better fit output formats such as LaTeX or JavaScript.
  • Template designer helpers. Jinja2 ships with a wide range of useful little helpers that help solving common tasks in templates such as breaking up sequences of items into multiple columns and more.