我正在尝试检索字典键的值并在Django模板的页面上显示:
{% for dictkey in keys %}
<p> {{ mydict.dictkey }} </p>
{% endfor %}
(假设'keys'和'mydict'已经传递到上下文中的模板中)
Django渲染页面但没有字典内容(“无效的模板变量”)
我认为问题是它试图做mydict ['dictkey']而不是mydict [变量dictkey中的实际键]?如何“逃避”这种行为?
谢谢!
更新: 根据收到的答案,我需要补充一点,我实际上正在寻找如何在for循环中实现键查找。这更能代表我的实际代码:
{% for key, value in mydict1.items %}
<p> {{ mydict2.key }} </p>
{% endfor %}
基本上,我有两个共享相同键的字典,所以我不能为第二个字符执行items()技巧。
答案 0 :(得分:4)
请参阅this answer至(可能重复的)相关问题。
它创建了一个自定义过滤器,当应用于带有键作为参数的字典时,使用键对字典进行查找并返回结果。
代码:
@register.filter
def lookup(d, key):
if key not in d:
return None
return d[key]
用法:
{% for dictkey in dict1.keys %}
<p> {{ dict2|lookup:dictkey }} </p>
{% endfor %}
注册过滤器包含在documentation。
中我觉得很遗憾这种东西没有内置。
答案 1 :(得分:1)
来自http://docs.djangoproject.com/en/dev/ref/templates/builtins/#for
如果您需要访问字典中的项目,这也很有用。例如,如果您的上下文包含字典数据,则以下内容将显示字典的键和值:
{% for key, value in data.items %}
{{ key }}: {{ value }}
{% endfor %}
诀窍是,您需要致电dict.items()
以获取(key, value)
对。
答案 2 :(得分:1)
请参阅文档:http://docs.djangoproject.com/en/dev/ref/templates/builtins/#for
{% for key, value in data.items %}
{{ key }}: {{ value }}
{% endfor %}