如何在django模板中实现列表迭代[重复]

Posted

技术标签:

【中文标题】如何在django模板中实现列表迭代[重复]【英文标题】:How to achieve list Iteration in django template [duplicate] 【发布时间】:2012-12-24 01:00:43 【问题描述】:

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

如何获取具有可变计数器的列表项。目的是获取so项而不是列表

不是这样的

% 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 %

【问题讨论】:

【参考方案1】:

我修复了以下问题:

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

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

【讨论】:

【参考方案2】:

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

% for item in listModels % 
  forloop.counter  

% endfor %

【讨论】:

我会带上计数器的值【参考方案3】:

Django 模板不允许你这样做。我不会教你如何将你的逻辑排除在模板之外,因为我认为这是一种风格选择。但要明白这是最简单的方法。如果需要使用索引,可以将其作为forloop 属性访问,如the documentation 中所述。

如果你真的想要变量索引,你可以制作自己的自定义模板标签来做到这一点。但是,在这种情况下,我建议你使用更强大的模板语言,比如Jinja2,而不是折磨 Django 模板语言。

【讨论】:

问题是,第一轮两个列表是否应该是相同数量的元素 我不确定我是否理解您的要求,但如果您说您有两个列表要串联迭代,那么我建议使用 zip 将它们合并到一个元组列表。 这是一个内置函数,当你想用一个循环遍历多个匹配列表时很有用:docs.python.org/2/library/functions.html#zip

以上是关于如何在django模板中实现列表迭代[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 模板中实现面包屑?

你如何在方案中实现一个简单的列表迭代器?

如何在 Jinja 中实现类似 Django 的标签

如何在 django 模板中迭代字典的列表值

如何使用对象列表在片段中实现newinstace模式[重复]

如何在 Java 中实现过滤迭代器?