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

Django模板遍历JSON对象及访问嵌套字段值的方法

Django模板遍历嵌套JSON对象实现方法

Django模板对传入的Python字典(即解析后的JSON结构)支持点语法逐层取值,配合for标签即可完成任意层级的遍历,不需要额外引入第三方库。

正确写法示例

针对给出的JSON结构,在monitor.html中按如下方式写即可拿到progress下的嵌套字段:

<!-- 遍历外层所有节点(node-A、node-B) -->
{% for node_key, node_val in data_context.items %}
<div class="node-block">
  <h4>当前节点:{{ node_key }}</h4>
  <p>测试字段1:{{ node_val.test1A }}</p>
  <p>测试字段2:{{ node_val.test2A }}</p>
  <p>测试字段3:{{ node_val.test3A }}</p>

  <!-- 直接取嵌套progress下的固定字段 -->
  <div class="progress-wrap">
    <p>配置项conf:{{ node_val.progress.conf }}</p>
    <p>位置项loc:{{ node_val.progress.loc }}</p>
  </div>

  <!-- 如果progress下字段不固定,也可以继续嵌套遍历 -->
  <!--
  <ul>
    {% for pro_key, pro_val in node_val.progress.items %}
    <li>{{ pro_key }}:{{ pro_val }}</li>
    {% endfor %}
  </ul>
  -->
</div>
{% endfor %}

取不到嵌套值的常见排查点

  • 传入模板的不是解析后的字典:如果视图层拿到的是原始JSON字符串,必须先做解析再传参,正确的视图代码示例:
    import json
    from django.shortcuts import render
    
    def monitor_view(request):
        # 假设raw_json是接口返回/文件读取的原始JSON字符串
        raw_json = '{"data": {"node-A": {...}, "node-B": {...}}}'
        json_data = json.loads(raw_json) # 字符串转字典这一步不能漏
        return render(request, 'monitor.html', {"data_context": json_data['data']})
    
  • 层级写错:progress是每个子节点下的属性,不能直接写{{ data_context.progress.conf }},必须先遍历到单个节点层级后再向下取值。
  • 键名包含特殊字符:如果硬编码取带横杠、空格的键名(比如直接写{{ data_context.node-A }}),模板会把横杠识别为减号导致取值失败,这种场景优先用items遍历取键值对,不要硬编码键名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 01:01:01