尝试访问Django模板中的Python字典变量时遇到Uncaught ReferenceError: False is not defined
错误。
我尝试使用safe
进行转义,但这不起作用:
result = {'test1' : [{'var1': 'PLANNED', 'var2': 'description', 'var3': False},{'var1':'PLANNED', 'var2':'description', 'var3': True}], 'test2' : [{'var1': 'PLANNED', 'var2': 'description', 'var3': False},{'var1':'PLANNED', 'var2':'description', 'var3': True}]}
return render(request, 'users/team.html', {'team' : team, 'result ' : result })
我正在如下所示的HTML中访问它:
var params= {{result |safe}};
如何将结果分配给Django模板中的变量?
答案 0 :(得分:0)
问题是您正在有效地用JavaScript编写var params = ... False ...;
。但是,JS中的false
写为false
,而不是False
!注意大小写差异。这导致JS VM尝试部分将变量False
的值分配给变量params
。不幸的是,您尚未定义一个名为False
的变量!因此,ReferenceError
。
解决此问题的一种方法是与json_script
过滤器链接:
{{ result|json_script:"params-data" }}
<script>
var value = JSON.parse(document.getElementById('params-data').textContent);
</script>
另一种方法是将result
手动编码/解码为JSON。例如
import json
return render(request, 'users/team.html', {'team' : team, 'result ' : json.dumps(result) })
和
var params = JSON.parse('{{result|safe}}');
第一种选择显然是更简洁和更直接的特性,因此更可取。