Django模板中的切片標籤可能使用python的切片代碼,但語法明顯不同。舉例來說,如果你想獲得一個變量序列的元素,在Python中,你會寫類似下面的東西:
>>>mylist = ["0th Element", "1th Element"]
>>>zero, one = 0, 1
>>>mylist[zero]
"0th Element"
>>>mylist[one]
"1th Element"
使用此語法與Django的片模板標籤將返回一個列表切片在任何情況下可疑的效用,爲獲得知名指數的項目:
{% with "0" as zero %}
{% with "1" as one %}
{% with "2" as two %}
{{mylist|slice:zero}} {{mylist|slice:one}} {{mylist|slice:two}}
{% endwith %}
{% endwith %}
{% endwith %}
呈現到HTML:
[] ["0th Element"] ["0th Element", "1th Element"]
注意區別:你所得到的重mylist[:x]
而不是mylist[x]
。
Django提供了足夠的工具來解決這個問題。第一個技巧是使用像0:1
這樣的顯式切片作爲您的索引,然後使用|join:""
將結果列表轉換爲單個元素。像這樣:
{% with "0:1" as zero %}
{{mylist|slice:zero|join:""}}
{% endwith %}
產量:
0th Element
這都在特別方便,如果你需要訪問父循環的指數與迭代處理子循環中時:
{% for parent in parent_loop %}
{% cycle "0:1" "1:2" "2:3" as parent_loop_index silent %}
{% for child in child_loop %}
{{child|slice:parent_loop_index|join:""}}
{% endfor %}
{% endfor %}
儘管沒有任何東西完成,但我不認爲Django已經實現了成就。
你可以在視圖中傳遞你需要的值嗎?如果您事先知道範圍,爲什麼不通過您嘗試顯示的確切值? – dm03514
不,我不能在這種情況下。這是硬編碼的自定義購物車頁面,所有這些都是一些嵌套表格的一部分。 – Goran