Я использую curl для просмотра вывода моего веб-приложения. Когда Flask и Jinja отображают шаблоны, на выходе появляется много лишнего пробела. Кажется, это добавлено путем рендеринга различных компонентов из Flask-WTF и Flask-Bootstrap. Я мог бы сделать это с помощью sed, но есть ли способ контролировать это из Jinja?
Удалите ненужные пробелы из шаблона, сделанного Jinja
Ответ 1
У Jinja есть несколько способов контролировать пробелы. У него нет способа предварительно настроить вывод, вы должны вручную убедиться, что все выглядит "красиво".
Самое широкое решение - установить trim_blocks и lstrip_blocks на env.
app.jinja_env.trim_blocks = True
app.jinja_env.lstrip_blocks = True
Если вы хотите сохранить новую строку в конце файла, установите strip_trailing_newlines = False.
Вы можете использовать управляющие символы для изменения работы пробела вокруг тега. - всегда удаляет пробел, + всегда сохраняет его, переопределяя настройки env для этого тега. Символ - может идти в начале или в конце (или в обоих) тега для управления пробелами в этом направлении, символ + имеет смысл только в начале тега.
{%- if ... %}раздевается перед{%- if ... -%}полосы до и после{%+ if ... %}сохраняет до{%+ if ... -%}сохраняет до и удаляет после- помните, что
{% endif %}обрабатывается отдельно
Управляющие символы применяются только к написанным вами шаблонам. Если вы включаете шаблон или используете макрос от стороннего производителя, то, как они написали, шаблон будет применяться к этой части.
Ответ 2
Чтобы свернуть пробелы до и после блока:
{%- if form.message -%} //trims before
{{ form.message }}
{%- endif -%} // trims after