Jinja comes with some utility tags shipped. Those arn't necessary but can help you with your templates.
Captures output and stores it in a variable:
{% capture as loopdata %} {% for item in navigation %} <li><a href="{{ item.href }}">{{ item.caption|escapexml }}</a></li> {% endfor %} {% endcapture %}
The output of the for loop is now stored in the variable loopdata.
This allows the double usage of block tags:
{% capture as title %}{% marker "title" %}{% endcapture %} <html> <head> <title>{{ title|escapexml }} | My Webpage</title> </head> <body> <h1>{{ title }}</h1> {% marker "body" %} </body> </html>
{% define %} allows you to set a variable.
Usage:
{% define my_variable "Some Value" %}
You can also apply filters:
{% define escaped content | escapexml %}