2009-08-15 25 views
1

我知道django故意不允許模板中的很多邏輯。然而,有時候你需要評估一些東西,並根據這些改變你的選擇。Django Template For Loop:您如何爲第一條記錄執行操作?

如何更改模板中的值或僅當它是第一條記錄時插入某些內容?但你仍然想循環其餘的。例如,下面我的模板代碼:在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 2009-08-15 02:20:08

回答

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 from {{ object.id }},因爲只要ID是唯一的,它應該沒有區別,對嗎?)

+0

非常感謝,雖然我認爲JS可能存在問題,但它實際上並不會突出顯示。因此,目前使用螢火蟲來找出爲什麼PHP版本可行,但不是django版本 – ismail 2009-08-15 17:31:26

+0

通過文件比較程序(FileMerge,如果您在OS X上)運行PHP的HTML輸出和Django的HTML輸出,並參見有什麼區別。如果JS使用PHP生成的HTML,那麼它必須是Django模板中的HTML問題。不過,Firebug最終可能會給你答案。 – user116170 2009-08-15 18:08:41

+0

得到它的工作,感謝您的幫助。 – ismail 2009-08-15 18:16:07

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 2009-08-15 02:27:58

+0

嗨Issy, 對不起,但我沒有得到你想要做的,爲什麼forloop.first不工作。 你能澄清嗎? – Tiago 2009-08-15 02:31:17

相關問題