目的
jinja2を用いて以下のようなhtmlを生成しようとしています.
expected.html
1<div> 2 aaaa 3 bbbb 4 cccc 5 dddd 6</div>
aaaa
とdddd
は固定ですが,bbbb
とcccc
は変わります.
そこで,以下のようにテンプレートを作成しました.
インデントが揃うようにblock
をfilter
で挟んでいます.
html
1<div> 2 aaaa 3 {% filter indent(width=2) %} 4 {% block hoge %} 5 {% endblock %} 6 {% endfilter %} 7 dddd 8</div>
html
1{% extends "template.html" %} 2 3{% block hoge %} 4bbbb 5cccc 6{% endblock %}
問題
上記のテンプレートファイルをrenderした結果,以下のように余計な改行が含まれています.
html
1<div> 2 aaaa 3 4 5 bbbb 6 cccc 7 8 9 dddd 10</div>
試したこと
ドキュメントを見ると,フラグを有効にする方法と,-
を付与する方法がありました.
フラグを有効にする方法
trim_blocks
とlstrip_blocks
の両方を有効にすると,以下のようにインデントが削除されてしまいました.
html
1<div> 2 aaaa 3bbbb 4 cccc 5 dddd 6</div>
trim_blocks
のみ有効にすると,以下のようにインデントがずれました.
html
1<div> 2 aaaa 3 bbbb 4 cccc 5 dddd 6</div>
lstrip_blocks
のみ有効にすると,空行は削除されませんでした.
html
1<div> 2 aaaa 3 4 5 bbbb 6 cccc 7 8 9 dddd 10</div>
-
を付与する方法
trim_blocks
とlstrip_blocks
の両方を無効に戻し,テンプレートを書き換えました.
-
の付け方を色々と変えてみましたが,いずれの場合も期待した結果を得ることはできませんでした.
以下はそのうちの2例です.
前のみに付与した場合,末尾に空白が残りました.
html
1<div> 2 aaaa 3 {%- filter indent(width=2) %} 4 {%- block hoge %} 5 {%- endblock %} 6 {%- endfilter %} 7 dddd 8</div>
html
1<div> 2 aaaa 3 bbbb 4 cccc 5 6 dddd 7</div>
前後に付与した場合,直後のインデントが削除されてしまいました.
html
1<div> 2 aaaa 3 {%- filter indent(width=2) -%} 4 {%- block hoge -%} 5 {%- endblock -%} 6 {%- endfilter -%} 7 dddd 8</div>
html
1<div> 2 aaaa 3 bbbb 4 cccc 5dddd 6</div>
質問
jinja2で前後のインデントを崩さず,改行を挟まないようにするにはどうすればいいでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。