2011-10-24 3 views
1

私はdjangoテンプレートにリストビューを表示しています。表示される最初と最後の要素に、内部要素とは異なるCSSクラスを使用したいと思います。最初と最後の特別なdjangoリストビュー

これは、Python側でスライスをとり、list_of_things(最初と最後の要素を省略したスライス)、first_in_list、およびlast_in_listを渡すことで実現できます。私は{% list_of_elements|slice %}{% list_of_elements|first %}{% list_of_elements|last %}とテンプレート側で同じことをすることができます。しかし、私はhtmlの行を3回(内側、最初、最後に)繰り返す必要があるので、どちらも控えめであるように見えます。

私が望むのはテンプレート側のテストなので、変更する部分だけを{% if ... %}にすることができます。これは存在しますか?それとも良い方法がありますか?

ありがとうございました。

答えて

4

あなたのif文をインラインできます

<ul> 
    {% for e in list_of_elements %} 
    <li class='{% if forloop.first %}first{% endif %}{% if forloop.last %}last{% endif %}'>{{ e }}</li> 
    {% endfor %} 
</ul> 

編集:行は読みやすさのために壊れる:

<ul> 
    {% for e in list_of_elements %} 
    <li class='{% if forloop.first %}first{% endif %} 
       {% if forloop.last %}last{% endif %}'> 
     {{ e }} 
    </li> 
    {% endfor %} 
</ul> 
+0

右!私はforloop.first(など)タグについて知らなかった。私はそれらを文書の中に見るのですが、それはまさに私が望んでいたものです。 – jma

0

ます。また、そのために何ジャンゴやテンプレートコードをちょうどCSSを使用することができませんでした。

表例

TR:第n-最後の子(1){ ⋮宣言 }

リスト例

のLi:第一子{ ⋮宣言 }

など...

+0

しかし、どのCSSスタイルを表示するかを知るためには、ループのどこにいるのかを知る必要があります。それとも私はあなたを誤解していますか? – jma

+0

あなたは誤解しています。このCSSは、リストの最初または最後の要素を描画しています。視覚的にリストされた要素よりも多くの要素を取得した場合、以前の解決策を破ることもできます。 – Ska

関連する問題