2009-11-09 141 views
132

我得到一個數組arr傳遞給我的Django模板。我想訪問數組中的單個元素,例如arr[0]arr[1]等,而不是遍歷整個數組。如何訪問Django模板中的數組元素?

有沒有辦法在Django模板中做到這一點?

謝謝。

+1

你可以這樣訪問項目'ARR .0','arr.1',...另一種解決方案:編寫你自己的模板標籤'arr | array_item:「0」'或者類似的東西。 – rphonika 2014-07-30 18:41:44

+1

@rphonika是的,這裏的示例:http://stackoverflow.com/a/29664945/2714931 – WeizhongTu 2015-04-16 03:43:42

回答

116
arr.0 
arr.1 

+6

如何打印動態如前:arr.variablename – karnaf 2014-12-04 12:08:59

+0

有沒有辦法做到這一點沒有幻數? 換句話說,「命名」.0.1.2等......? 例如array [「first name」],array [「last name」]等等。 – cyberjoac 2014-12-19 09:16:53

+0

@cyberjoac在這種情況下使用字典。在視圖中:d = {'first_name':'foo','last_name':'bar'}。在模板{{d.first_name}}中可以正常工作。 – 2014-12-19 10:49:01

267

請記住,在Django模板點符號用於在Python四個不同的符號。在模板中,foo.bar可以指任何的:

foo[bar]  # dictionary lookup 
foo.bar  # attribute lookup 
foo.bar()  # method call 
foo[bar]  # list-index lookup 

它試圖在他們的順序,直到找到一個匹配。所以foo.3將讓你列表索引,因爲你的目標是不是3作爲一個關鍵的字典,沒有名爲3的屬性,並沒有一個名爲方法3.

+1

** + 1 **歡呼聲,這是非常有用的。 – 2014-11-21 06:41:05

+2

是不是第一個也是最後一個更像''foo ['bar']'? – 2016-02-10 05:18:00

+2

似乎沒有辦法使用變量索引來訪問列表項::( – 2017-01-27 16:45:33

2

當你render的請求土特產品coctext一些信息: 爲exampel:

return render(request, 'path to template',{'username' :username , 'email'.email}) 

,您可以查看在它的模板是這樣的: for variabels :

{% if username %}{{ username }}{% endif %} 

for array :

{% if username %}{{ username.1 }}{% endif %} 
{% if username %}{{ username.2 }}{% endif %} 

您還可以在views.py命名的數組對象和十個這樣使用它:

{% if username %}{{ username.first }}{% endif %} 

,如果有其他的問題,我希望能幫助你