我有我的开发服务器(django 1.5)。在此服务器中,我可以毫无问题地创建 JavaScript 模板。
空 View 仅返回一个模板。现在,在此模板中我有以下代码:
{% load verbatim %}
<!DOCTYPE html>
<html>
<head>
<link href="http://0.0.0.0:8080/css/bootstrap/2.3.1/css/bootstrap.css" rel="stylesheet" type="text/css" />
<link href="http://0.0.0.0:8080/css/bootstrap/2.3.1/css/bootstrap-responsive.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="container-fluid">
<div class="row-fluid">
<div class="span12">
<div id="result"></div>
</div>
</div>
</div>
<!-- The javascript template -->
<script src="http://blueimp.github.io/JavaScript-Templates/js/tmpl.min.js"></script>
{% verbatim %}
<script type="text/x-tmpl" id="tmpl-demo" src="">
<h3>{%=o.title%}</h3>
<p>Released under the
<a href="{%=o.license.url%}">{%=o.license.name%}</a>.</p>
<h4>Features</h4>
<ul>
{% for (var i=0; i<o.features.length; i++) { %}
<li>{%=o.features[i]%}</li>
{% } %}
</ul>
</script>
{% endverbatim %}
<!-- The javascript -->
<script type="text/javascript">
var data = {
"title": "JavaScript Templates",
"license": {
"name": "MIT license",
"url": "http://www.opensource.org/licenses/MIT"
},
"features": [
"lightweight & fast",
"powerful",
"zero dependencies"
]
};
document.getElementById("result").innerHTML = tmpl("tmpl-demo", data);
</script>
</body>
</html>
郑重声明:使用标签 {% verbatim %}
,因此 django 模板引擎会忽略模板脚本,因为它们都使用非常相似的语法
现在,当我尝试在使用 apache 和 django 1.4.5 的主服务器中运行相同的页面时,模板脚本似乎无法被识别。在 Firebug 中我收到以下错误:
语法错误:函数体后出现意外垃圾,以“}”开头
如果我删除 text/x-tmpl 脚本中的所有 javascript 模板标记,则不会显示任何错误。
这让我认为浏览器认为 text/x-tmpl 是 javascript,因为:
- 我错过了在 View 中发送内容
- 我的 apache 配置中缺少某些内容
我试图四处寻找,但什么也没找到。
你们中有人知道如何解决这个问题吗?
谢谢:)
编辑1: 这是 javascript 模板 wiki 的链接 https://github.com/blueimp/JavaScript-Templates
编辑2: 这是 django View
@login_required
def test(request):
return render_to_response('myapp/test.html', locals(), context_instance = RequestContext(request))
最佳答案
首先感谢大家的帮助:)
我之前制作了一个用于 django 1.4 的自定义逐字模板标记,正如 Alasdair 指出的那样,默认的逐字标记已添加到 django 1.5 中......这是我从未注意到的。
话虽如此,在我的开发服务器(运行 django 1.5)中使用的是 django 逐字模板标记...而其他服务器(运行 django 1.4)则使用我的自定义模板标记。
关于 Firebug 错误。由于 token 之间的间距错误而被抛出。
Django 1.5 逐字标记将呈现 {% } %}
,而我的自定义模板标记将呈现 {%}%}
。
所以我只是在自定义模板标记中添加了正确的间距,问题就解决了。
关于Javascript 模板不运行以 '}' 开头的 : SyntaxError: unexpected garbage after function body,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30842782/