Удалите ненужные пробелы из шаблона, сделанного Jinja

Я использую curl для просмотра вывода моего веб-приложения. Когда Flask и Jinja отображают шаблоны, на выходе появляется много лишнего пробела. Кажется, это добавлено путем рендеринга различных компонентов из Flask-WTF и Flask-Bootstrap. Я мог бы сделать это с помощью sed, но есть ли способ контролировать это из 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