2010-07-27 87 views
10

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

回答

12

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

+0

这个工作GR8 ...谢谢! – Cool 2010-07-28 03:03:26

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 }}; 
+0

我将在我的js代码中实现JSON时使用这个。谢谢 – Cool 2010-07-27 03:45:21

+0

@JasonPrado:为什么要这样做? – Medorator 2014-05-26 11:24:45

+0

这个答案是4岁,所以我敢打赌,django现在有更好的解决方案。但我的想法是,能够安全,轻松地将Python字典转换为JSON字典是很好的。 – 2014-05-26 17:50:57