说我有这些数据,然后传递给我的模板:
apps = [
{'category': 'one', 'item': 'blah'},
{'category': 'one', 'item': 'blah'},
{'category': 'two', 'item': 'blah'},
{'category': 'two', 'item': 'blah'},
{'category': 'three', 'item': 'blah'}
]
然后在我的模板中,我想添加一个带有id'类别的div。但如果之前已添加id,则不重复任何div。所以类似于:
{% for app in apps %}
<div id="{{app.category}}"></div>
{% endfor %}
但我只想要渲染这些:
<div id="one"></div>
<div id="two"></div>
<div id="three"></div>
答案 0 :(得分:2)
我认为您应该在将应用列表传递给模板之前删除重复项。
有很多方法可以做到这一点,我将举一个简单的例子。
apps = [dict(t) for t in set([tuple(d.items()) for d in apps])]
如果您想在{'items': 'blah'}
中添加apps
,我建议您在制作新应用之前使用该键,值对。
您可以像这样使用简单的del
函数和for循环
for d in apps:
del d['item']
然后您的apps
列表就像这样
[{'category': 'one'},
{'category': 'one'},
{'category': 'two'},
{'category': 'two'},
{'category': 'three'}]
然后你可以再次使用我的答案。
如果您熟悉
lambda
,可以像这样使用lambda函数
map(lambda d: d.pop('item'), apps)
您将获得与上述相同的apps
。