2009-11-09 139 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 %} 

,如果有其他的问题,我希望能帮助你