Django模板中通过自定义过滤器获取嵌套字典数据

作者:百宝袋

时间:2026-10-23

浏览:277

本文介绍在Django模板中处理嵌套字典数据的方法。当标准点操作符无法直接获取深层值时,可通过register.filter定义自定义过滤器,并在模板中调用该过滤器,结合JavaScript动态渲染指定键值,简化数据获取流程。

文章目录

Django模板中获取嵌套字典数据的方法

在Django框架中,前端JavaScript或模板通常使用点操作符来访问字典或列表中的数据,例如通过{{data.0}}或{{data.arg}}的形式提取值。

然而,当数据结构呈现为嵌套类型时,直接提取特定层的值会变得复杂。例如,需要访问的数据结构如下所示:

目标是获取correct键下qxl字段的值。


startArgsSet={"correct":{"qxl":0,"kkx":0},"reliable":{"qxl":0,"kkx":0},"security":{"qxl":0,"kkx":0},"understand":{"qxl":0,"kkx":0},"entropy":{"qxl":0,"kkx":0},
"mature":{"qxl":0,"kkx":0},"active":{"qxl":0,"kkx":0},"service":{"qxl":0,"kkx":0},"file":{"qxl":0,"kkx":0},
"tech":{"qxl":0,"kkx":0},"property":{"qxl":0,"kkx":0},"organize":{"qxl":0,"kkx":0},"develop":{"qxl":0,"kkx":0},
"source":{"qxl":0,"kkx":0},"update":{"qxl":0,"kkx":0},"fix":{"qxl":0,"kkx":0},
"quality":{"qxl":0,"kkx":0},"meanNum":{"qxl":0,"kkx":0},"variance":{"qxl":0,"kkx":0}
}

若强行将数据格式转换为列表中的无嵌套字典形式,处理逻辑会较为繁琐。此时,可以通过定义自定义过滤器来简化数据获取过程。


from django.template.defaulttags import register

@register.filter
def getArgQxlValue(dictionary,arg):
  return dictionary[arg]['qxl']
  
@register.filter
def getArgKkxValue(dictionary,arg):
  return dictionary[arg]['kkx']
  
@register.filter
def getArgName(dictionary,arg):
  return dictionary[arg]['name']

在Django模板中,可以按以下方式编写代码:


<!-- the second important page of the project-->
{% load staticfiles %}

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>超标信息</title>

   <script src="{% static 'js/a-mynewjs.js' %}"></script>

</head>

<body>

 {{ guestSetArgs|safe }}<br><br><br>
 
 {{ warningdata|safe }}<br><br>
 
 <script>
 {% for i in guestSetArgs %}
  {% for j in warningdata %} 
    if("{{i}}"=="{{j}}")
    {
      if(Number({{warningdata|getArgQxlValue:j}})>Number({{guestSetArgs|getArgQxlValue:i}}))
      var setArgStr="{{warningdata|getArgName:i}} 超出阀值  阀值:{{guestSetArgs|getArgQxlValue:j}}  检测值:{{warningdata|getArgQxlValue:j}}<br>"
      document.write(setArgStr);
    }
    
  {% endfor %} 
 {% endfor %} 
 
  </script>
</body>
</html>

使用类似{{warningdata|getArgQxlValue:j}}的语法,即可成功获取嵌套结构中的目标值。

Django模板中获取嵌套字典数据的方法

对代码进行适当的美化与优化。

Django模板中获取嵌套字典数据的方法

以上即为本文的核心内容,希望能为读者的学习提供有益参考,同时也欢迎持续关注本站以获取更多技术分享。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章