You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django模板嵌套for循环取值问题及字典展开方法咨询

Django模板中遍历字典键值对的正确方式

问题解决:通过变量获取字典对应键的值

你提到的写法some_dict.i会让Django尝试查找键为字符串'i'的值,而非变量i代表的键。要实现需求,有两种可行方案:

方案1:自定义模板过滤器

Django模板默认不支持直接用变量作为键索引字典,需要自定义一个过滤器来实现:

  1. 在你的Django应用下创建templatetags目录(需包含空的__init__.py文件),新建custom_filters.py文件,写入以下代码:
from django import template

register = template.Library()

@register.filter
def get_item(dictionary, key):
    return dictionary.get(key)
  1. 在需要使用的模板开头加载过滤器:
{% load custom_filters %}
  1. 修改循环代码:
{% for i in some_dict %}
    {% for value in some_dict|get_item:i %}
        <!-- 这里可以处理每个value -->
    {% endfor %}
{% endfor %}

方案2:直接遍历字典的items()(推荐)

这是更简洁规范的方式,不需要额外过滤器,直接同时获取键和对应的值:

{% for key, values in some_dict.items %}
    <!-- key是字典的键,比如a、b;values是对应的值列表 -->
    {% for value in values %}
        <!-- 处理每个value -->
    {% endfor %}
{% endfor %}

更规范的字典展开方式

上述方案2就是最规范的做法:利用字典的items()方法,在模板循环中一次性获取键和对应的值集合。这种写法逻辑清晰,避免了二次取值的麻烦,也符合Django模板的最佳实践。

以你给出的示例字典{'a': ['val1', 'val2', 'val3'], 'b': ['val1', 'val2', 'val3']}为例,使用方案2可以直接遍历每个键对应的列表,代码可读性更高。

内容的提问来源于stack exchange,提问作者Hentai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 15:54:36