我曾经在Django中将字典方面的变量传递给HTML模板而没有任何问题。现在我计划在HTML文件中添加一些javascript,并使用相同的方式“{{}}”从javascript中的字典中获取对象。字典中的所有对象实际上都是字符串。 在Django中,代码是:
dataDict = {}
dataDict["time"] = json.dumps(",".join(timeList))
return render_to_response("xxxx.html", dataDict,\
context_instance=RequestContext(request))
在HTML页面和Javscript中,我只想使用字符串变量来接收它,然后解析我想要的信息,我们的代码是:
var test = {{ time }};
但似乎Django无法将数据传递给Javascript中的字符串变量。所以我有两个问题:
有人对此有所了解吗?
谢谢!
答案 0 :(得分:7)
也许你只需要双引号?
var test = "{{time}}";
我们假设dataDict['time'] = "1:30 PM, 2:30 PM"
。渲染模板时,它会创建此文本(使用查看源自行验证):
var test = 1:30 PM, 2:30 PM;
如您所见,这不是有效的JavaScript。当你加倍引用它时就会变成这样:
var test = "1:30 PM, 2:30 PM";
同样,您需要使用插值属性双引号DOM元素,例如<a href="{{url}}">..</a>
。 Django builtin template filter docs有很多例子。
重要的是要记住Python环境中的模板评估/渲染时间与JavaScript浏览器执行/评估时间之间的差异,尤其是当您尝试在两者之间传递数据时。
答案 1 :(得分:1)
建议转换为JSON,以防止包含字符串的虚假</script>
等内容导致JavaScript出现问题。分配应该足够了,因为JSON字符串看起来像JavaScript文字。