Ответ 1
Кажется, что настройки вашей среды не установлены до. jinja2 загружает ваш шаблон.
класс jinja2.Environment([опции])
... Экземпляры этого класса могут быть изменены, если они не разделены, и , если до сих пор не был загружен шаблон. Изменения в средах после загрузки первого шаблона приведут к неожиданным эффектам и undefined.
Проверьте порядок/структуру кода, чтобы узнать, как загружаются настройки среды и шаблоны.
Как в сторону, jinja2 управление пробелами работает как ожидалось без сложности среды и загрузки:
import jinja2
template_string = '''<div>
{% if x == 3 %}
<small>{{ x }}</small>
{% endif %}
</div>
'''
# create templates
template1 = jinja2.Template(template_string)
template2 = jinja2.Template(template_string, trim_blocks=True)
# render with and without settings
print template1.render(x=3)
print '\n<!-- {} -->\n'.format('-' * 32)
print template2.render(x=3)
<div>
<small>3</small>
</div>
<!-- -------------------------------- -->
<div>
<small>3</small>
</div>
Я не использовал jinja2, но после сканирования документов, порядок загрузки кажется подозрительным.