从单独的JavaScript文件访问页面上的Django变量

时间:2017-05-06 09:12:26

标签: javascript django

我搜索了关于这个主题的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文件访问它。但我打算只用一个文件来做。

0 个答案:

没有答案