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