私はリスト "foos"を持っています。もし私が5つ以上の "foos"を持っていれば、最初の2つのものに特化したものを作り、残りのものには特定のものをしたい。Jinja2高度なスライシングを行う方法
は、だから私はちょっとHTMLでこのような何かをしたい:
<div id="accordion">
<p>Foo1<p>
<p>Foo2<p>
<div id="collapseMe" class="panel-collapse collapse">
<p>Foo3<p>
<p>Foo4<p>
etc...
</div>
</div>
<a data-parent="#accordion" href="#collapseMe"><p>Expand</p></a>
だから、私はちょっとJinga2でこれを解決してきましたが、解決策は非常に醜いです。私は何かが欠けているのだろうかと思っていますか?
<div id="accordion">
{% for f in foos %}
{% if loop.index <= 2 %}
<p>{{ f.txt }}</p>
{% else %}
{% if loop.index == 3 %}
<div id="collapseMe" class="panel-collapse collapse">
<p>{{ f.txt }}</p>
{% else %}
<p>{{ f.txt }}</p>
{% endif %}
{% endif %}
{% endfor %}
{% if foos | length > 2 %}
</div>
<a data-parent="#accordion" href="#collapseMe"><p>Expand</p></a>
{% endif %}
</div>
これは機能しますが、これを行うにはより良い方法が必要だと思います。残念ながら、スライス機能はJinga2ではかなり制限されていますが、私がまだ拾っていない別の方法がありますか?バッチ機能の仕組みについては完全にはっきりしていませんが、それはうまくいくでしょうか?
私は解決策が気に入っていますが、それは上記より優れていますか?私はあなたのポイントは、テンプレートから潜在的に複雑なプロセスを引き出して、代わりにコードに入れる方が良いと考えていますか? – edumike
@edumike;これにより、メインテンプレートが読みやすくなり、スライスフィルタは他の場所で再利用できます。あなたがカスタムテンプレートグラフではなく簡潔なコードで作業をしているので、速度優位性が最も高いでしょう。 – Soviut