如何在django模板中实现列表迭代

时间:2013-01-09 18:53:28

标签: python django for-loop django-templates

  

可能重复:
  Get list item dynamically in django templates

如何使用变量计数器获取列表项。目的是获得so项而不是list

不喜欢这个

{% for item in listModels %} 
 {{ item | safe }} 

{% endfor %}

所以工作

{% for i in listModels|length|get_range %} // get size list 

 {{ listModels.i | safe }}

{% endfor %}

不起作用

{% for i in listModels|length|get_range %} // get size list 

 {{ listModels.i | safe }}

{% endfor %}

3 个答案:

答案 0 :(得分:1)

Django模板不允许你这样做。我不打算告诉你如何保持逻辑不在你的模板中,因为我认为这是一种风格选择。但要明白这是最简单的方法。如果您需要使用索引,则可以将其作为forloop属性进行访问,如the documentation中所述。

如果您真的想要变量索引,可以创建自己的自定义模板标记来执行此操作。但是,在这种情况下,我建议您使用更强大的模板语言,如Jinja2,而不是折磨Django模板语言。

答案 1 :(得分:0)

Django模板语言为您提供了一种方法...

{% for item in listModels %} 
 {{ forloop.counter }} 

{% endfor %}

答案 2 :(得分:0)

我按照以下方式修复:

{{ listModelsData|lookup:i|lookAttribute:"author" }} -// this equal listModelsData[i].author - this code in python 

@register.filter
def lookAttribute (d, token):
     return getattr (d, token)