2009-08-15 12 views
1

私はdjangoが意図的にテンプレート内にたくさんのロジックを許さないことを知っています。しかし時々あなたは何かを評価し、それに基づいてあなたの選択肢を変える必要があります。ループのDjangoテンプレート:最初のレコードに対してどのようにアクションを実行しますか?

テンプレートの値を変更するか、最初のレコードの場合にのみ何かを挿入しますか?しかし、あなたはまだ残りの部分をループしたいと思うでしょう。例えば、以下の私のテンプレートコード:PHPテンプレートの

{% for object in object_list %} 
    <div id="t{{ object.id }}-header" class="content_headings title_highlight" >{{ object.title }}</div> 
    <div id="t{{ object.id }}-content"> 
     ...... 

同様のコード:

<div id="t<?php if ($i != 1) { echo $i-1; } ?>-header" class="content_headings<?php if ($i == 1) { ?> title_highlight<?php } ?>" ><?php the_title(); ?></div> 
<div id="t<?php if ($i != 1) { echo $i-1; } ?>-content"> 
+0

{%if forloop.first%}でこれが見つかりましたが、コードはまだ動作していないようです。 – ismail

答えて

7

forloop.firstは、移動するための方法です。私は取っていないのです(

{% for object in object_list %} 
    <div id="t{% if not forloop.first %}{{ object.id }}{% endif %}-header" class="content_headings{% if forloop.first %} title_highlight{% endif %}"> 
     {{ object.title }} 
    </div> 
    <div id="t{% if not forloop.first %}{{ object.id }}{% endif %}-content"> 
{% endfor %} 

私はあなたのPHPコードに対することを確認したのだが、ほぼ正確に同じことをやっているように見える:私はあなたがする必要があるすべては、わずかにティアゴの答えを変更し、このような何かを得ると思います1 {{ object.id }}からIDが一意である限り違いはないはずですか?

+0

ありがとうございました、私はJSとの問題があるかもしれないと思いますが、実際には強調しませんでした。だから現在Firebugを使ってPHPのバージョンが動作するのはなぜですか?djangoのバージョンは見つからない – ismail

+0

PHPのHTML出力とDjangoのHTML出力をファイル比較プログラム(OS Xの場合はFileMerge)で実行し、違いは何ですか? JSがPHPで生成されたHTMLを扱っていた場合は、DjangoテンプレートのHTMLの問題でなければなりません。 Firebugはおそらくあなたに答えを与えるでしょう。 – user116170

+0

が働いてくれました。 – ismail

2
{% for object in object_list %} 
<div id="t{{ object.id }}-{%if forloop.first%}header{%else%}content{%endif%}" class="content_headings title_highlight" >{{ object.title }}</div> 
... 
+0

返信いただきありがとうございます、あなたのPHPコードは、上記のことを実際に行っていません。 PHPコードが最初の値かどうかを確認してから、新しいクラスを追加します。そして、それは1より大きい任意の値のIDを出力します!= -1ビット... – ismail

+0

こんにちはイッシー、 申し訳ありませんが、私はあなたが何をしたいのか、なぜforloop.firstが動作しないのか。 あなたは明確にできますか? – Tiago

関連する問題