jinja2_workarounds
offers an extension for jinja2 that works around a long standing issue1
where include
does not preserve correct indentation for multi-line includes. Simply add the
jinja2_workarounds.MultiLineInclude
extension to your environment and use the indent content
directive to
correctly indent your multi-line includes.
pip install jinja2_workarounds
# text.j2
this
is
some
text
# example.j2
example:
{% include 'text.j2' indent content %}
is then rendered as
example:
this
is
some
text
compared to jinja2
's default include
which would result in
example:
this
is
some
text
MultiLineInclude
is compatible with custom block_start_string
and block_end_string
. It also works with
the advanced features of jinja2'
s include
statement. The following variants are all supported and work as
expected
{% include 'missing.j2' ignore missing indent content %} # handle missing templates
{% include ['foo.j2', 'bar.j2'] indent content %} # multiple alternative templates
{% include 'child.j2' without context %} # include child with/without content
{%- include 'child.j2' +%} # include with custom whitespace control