Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在模板中查找密钥失败_Javascript_Django - Fatal编程技术网

Javascript 在模板中查找密钥失败

Javascript 在模板中查找密钥失败,javascript,django,Javascript,Django,我试图在字典中获取特定列表,但首先我得到了错误:“无法查找密钥”,在internet上搜索时,我发现了此解决方案的一个步骤: {% with obj1.page.val2 as val2 %} {{ obj1.val1|default:val2 }} {% endwith %} 但它不起作用。以下是我的代码: keyData = '\'' + id + '|' + id2 + '|' + id3 + '\''; console.log(keyData); var val2;

我试图在字典中获取特定列表,但首先我得到了错误:“无法查找密钥”,在internet上搜索时,我发现了此解决方案的一个步骤:

{% with obj1.page.val2 as val2 %}
     {{ obj1.val1|default:val2 }}
{% endwith %}
但它不起作用。以下是我的代码:

keyData = '\'' + id + '|' + id2 + '|' + id3 + '\'';
console.log(keyData);
var val2;                       

try
{      
     {% with keyData as val2 %}
         console.log(val2);
         datas = {{product_prices_complex_key|get_item:val2|safe}};
     {% endwith %}                      

     console.log(datas);
}catch(err){console.log(err);}
关键数据:WA5-8 | 2 | 5


并且在字典中。

您需要将product\u prices\u complex\u密钥转换为JS对象,以便使用它执行动态查找。标签提供了一种实现这一点的方法

这会出现在页面上脚本之前的某个位置,但不会出现在脚本标记中

{{ product_prices_complex_key|json_script:"data" }}
然后可以像这样访问这些数据

var product_prices_complex_key = JSON.parse(document.getElementById('data').textContent);
keyData = '\'' + id + '|' + id2 + '|' + id3 + '\'';
console.log(keyData);                

try
{
     datas = product_prices_complex_key[keyData];
     console.log(datas);
}catch(err){console.log(err);}

{%keyData为val2%}
keyData是JS变量吗?函数buildTable($el,cells,rows,level,id,id2,id3){var i;var j;var row var columns=[]var data=[]var-keyData='';var-datas=null;它在模板中脚本的开头声明。如果
keyData
是一个JS变量,那么它将不起作用。Django将首先呈现模板并在运行任何JS之前解析所有标记,在您的情况下,您将
None
分配给
val2
because keyData在您的上下文中不存在keyData='\''+id+'\'''.'+id2+'.'+id3+'\'';这是我的变量,有一个值,在控制台日志中显示'WA5-8 | 2 | 5'@IainShelvington是对的。您对javascript和django模板标记的工作方式有误解。