如何在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模板中实现列表迭代[重复]的主要内容,如果未能解决你的问题,请参考以下文章