程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

JavaScript获取Django模板中指定键值的数据,使用过滤器

发布于2019-08-10 07:10     阅读(234)     评论(0)     点赞(1)     收藏(4)


Django中利用js来操作数据的常规操作一般为点(.)操作符来获取字典或列表的数据,一般如{{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']
复制代码

在模板中就可以以这样写

复制代码
<!-- 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}}&nbsp;超出阀值&nbsp;&nbsp;阀值:{{guestSetArgs|getArgQxlValue:j}}&nbsp;&nbsp;检测值:{{warningdata|getArgQxlValue:j}}<br>"
           document.write(setArgStr);
       }
       
    {% endfor %} 
  {% endfor %} 
  
    </script>
</body>
</html>
复制代码

形如{{warningdata|getArgQxlValue:j}},就可以获取到里面的值了

 

参考自https://docs.djangoproject.com/en/2.2/howto/custom-template-tags/

 



所属网站分类: 技术文章 > 博客

作者:好难受

链接:https://www.pythonheidong.com/blog/article/18648/e15d84afb17f150a7239/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

1 0
收藏该文
已收藏

评论内容:(最多支持255个字符)