我有两个具有相同键的字典。我使用一个字典来建立表格,但是我不知道如何访问其他字典。
示例
{% for key1, item1 for dict1.items %}
{% for key2, item2 for item1.items %}
<p>{{ item2.value }}</p>
<p>there should be value from dict2</p>
{% endfor %}
{% endfor %}
在python中,我可以使用dict2 [key1] [key2] [“ value”],但是如何使用模板呢?
答案 0 :(得分:1)
您要么必须再编写一个for循环,这在性能方面并不是一个好主意。
但是您可以编写一个自定义模板过滤器:
@register.filter
def get_value(data, key):
return data.get(key)
然后在您的模板中:
{% load custom_tags %}
{{ dict2|get_value:"key" }}
您还可以执行多项操作:
{{ dict2|get_value:"key"|get_value:"key2" }}
查看文档以获取更多详细信息:
答案 1 :(得分:0)
您在这里基本要做的是在模板中移动业务逻辑。 Django的模板语言故意没有实现带有参数和下标的函数调用,以使人们更有动力在视图中编写业务逻辑。如果您确实要使用下标,则可以使用jinja template renderer。
您可以通过合并两个字典来对字典进行预处理,例如:
result = {
k1 : {
k2 : (v1, dict2[k1][k2]['value'])
for k2, v1 in subd.items()
}
for k1, subd in dict1.items()
}
然后您可以遍历模板中的字典,例如:
{% for key1, item for result.items %}
{% for key2, vs for item1.items %}
<p>{{ vs.0.value }}</p>
<p>{{ vs.1 }}</p>
{% endfor %}
{% endfor %}
所以这里vs.1
包含相应的dict2[key1][key2][value]
。