web-dev-qa-db-ja.com

Jinjaレンダリングテンプレートから不要な空白を削除する

curlを使用して、Webアプリの出力を監視しています。 FlaskおよびJinjaレンダリングテンプレートの場合、出力に多くの不要な空白があります。Flask-WTFおよびFlask-Bootstrapのさまざまなコンポーネントをレンダリングすることにより追加されるようです。 sedですが、これをJinjaから制御する方法はありますか?

28
Hexatonic

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 %}は個別に扱われます

制御文字はテンプレートyouにのみ適用されます。ただし、テンプレートを含めるか、サードパーティのマクロを使用する場合、彼らが書いたテンプレートはその部分に適用されます。

57
davidism

ブロックの前後の空白を折りたたむには:

{%- if form.message -%} //trims before
   {{ form.message }}
{%- endif -%} // trims after
1
Anas