从JavaScript访问Django模板{{Variable}}

时间:2010-07-27 03:33:06

标签: javascript django

我试图在html页面内联javascript中访问django模板变量,它工作正常。 但是如果我使用<script src="..>包含js那么它就不起作用了。 是这个限制还是我做错了什么? 我非常感谢你的帮助。

2 个答案:

答案 0 :(得分:12)

服务器上的Django模板处理器不处理包含的Javascript,因此无效。如果您需要通过模板将信息传递给包含的Javascript文件,请让您的模板创建一个小<script>块,其中声明某些全局变量包含这些模板变量。然后,您的纯Javascript文件可以通过从模板中查找由<script>创建的全局对象来获取值。

答案 1 :(得分:5)

Pointy的回答是正确的。我经常发现这个过滤器对这种情况很有用:

@register.filter(name='json')
def _json(obj):
  #remember to make sure the contents are actually safe before you use this filter!
  return safestring.mark_safe(json.dumps(obj)) 

然后在<script>标签中我可以做这样的事情:

window.g_details = {{ details|json }};