我搜索了关于这个主题的SO没有太大成功,我希望在您完成整个问题描述后这不是重复。
让我说我有一个变量countryList
,一个JSON文本,从Django视图上下文返回到模板,我将它直接插入到正文中:
<body>
{% if countryList %}
[Blocks for other codes]
{% endif %}
</body>
我发现如果我想从JavaScript(JS)访问countryList
的内容/值,我必须将此JS代码放在[Blocks for other codes]
中。通过这种方式,我可以通过var cList = '{{ countryList }}';
函数内的jQuery(document).ready()
直接访问内容。
但是,我尝试以下列方式从加载到此HTML的外部JavaScript文件(country.js
)访问相同的变量
<script type="text/javascript" src="{% static 'country.js' %}"></script>
<body>
{% if countryList %}
[Blocks for other codes]
{% endif %}
</body>
然后在此文件中使用var cList = '{{ countryList }}';
只给我一个字符串变量{{ countryList }}
。
Django设置没有问题,country.js
可以正确加载。这让我想知道它是否与范围有关。据我所知,这样的Django变量直接作为文本插入到HTML中。那么,这个HTML页面上的这个变量驻留在哪里?如何从加载到此页面的JS文件中访问它?
注意补充:我知道我可以将脚本插入[Blocks for other codes]
以将此变量存储到本地或会话存储,然后允许从JS文件访问它。但我打算只用一个文件来做。