我正在尝试在模板中同时打印两个dicts的值,例如:
<td>key</td><td>value from dict1</td><td>value from dict2</td>
两个词组都包含相同的键但值不同。有没有办法实现这个目标?
答案 0 :(得分:2)
您可以使用自定义过滤器来完成此操作。如果密钥相同,请首先按照this answer:
中的说明定义自定义过滤器from django.template.defaulttags import register
...
@register.filter
def get_item(dictionary, key):
return dictionary.get(key)
然后您可以在模板中执行以下操作:
{% for key, value1 in dict1.items %}
<td>Value 1: {{ value1 }}</td>
<td>Value 2: {{ dict2|get_item:key }}</td>
{% endfor %}
另请参阅this question了解其他解决方法。
答案 1 :(得分:0)
在视图中进行一些重新组织后,您可以根据需要向模板中添加任意数量的字典,并通过将其添加到字典列表(例如,
dict1 = {'key1':value1, 'key2':value2, 'key3': etc.}
dict2 = {'key1':value1, 'key2':value2, 'key3': etc.}
您想通过创建列表对象同时遍历模板中的两个列表。假设上面的列表来自某些数据库对象:
datas = []
for item in items:
# create new dictionary combining values required
data = {'name':item.name, 'rev':item.rev, 'val':item.val}
datas.append(data)
然后将字典列表(就像对Django对象的过滤一样)发送到模板:
{% for data in datas %}
<td>{{ data.name }}</td>
<td>{{ data.value1 }}</td>
<td>{{ data.value2 }}</td>
{% endfor %}