Я использую 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