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}
}
这时候如果改变数据格式为列表中的无嵌套字典格式比较麻烦,可以自定义过滤器来获取数据,
fromdjango.template.defaulttagsimportregister
@register.filter
defgetArgQxlValue(dictionary,arg):
returndictionary[arg]['qxl']
@register.filter
defgetArgKkxValue(dictionary,arg):
returndictionary[arg]['kkx']
@register.filter
defgetArgName(dictionary,arg):
returndictionary[arg]['name']
在模板中就可以以这样写
<!--thesecondimportantpageoftheproject-->
{%loadstaticfiles%}
<!DOCTYPEhtml>
<html>
<head>
<metacharset="utf-8">
<title>超标信息</title>
<scriptsrc="{%static'js/a-mynewjs.js'%}"></script>
</head>
<body>
{{guestSetArgs|safe}}<br><br><br>
{{warningdata|safe}}<br><br>
<script>
{%foriinguestSetArgs%}
{%forjinwarningdata%}
if("{{i}}"=="{{j}}")
{
if(Number({{warningdata|getArgQxlValue:j}})>Number({{guestSetArgs|getArgQxlValue:i}}))
varsetArgStr="{{warningdata|getArgName:i}} 超出阀值 阀值:{{guestSetArgs|getArgQxlValue:j}} 检测值:{{warningdata|getArgQxlValue:j}}<br>"
document.write(setArgStr);
}
{%endfor%}
{%endfor%}
</script>
</body>
</html>
形如{{warningdata|getArgQxlValue:j}},就可以获取到里面的值了

如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h54873.shtml