如何在for循环中使用django模板点表示法

时间:2010-12-06 03:50:20

标签: python django django-templates

我正在尝试检索字典键的值并在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()技巧。

3 个答案:

答案 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 %}