Uncaught ReferenceError:在python Django模板中未定义False

时间:2019-05-29 10:11:02

标签: python-3.x django-templates

尝试访问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模板中的变量?

1 个答案:

答案 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}}');

第一种选择显然是更简洁和更直接的特性,因此更可取。