Javascript 模板不运行以 '}' 开头的 : SyntaxError: unexpected garbage after function body,

标签 javascript django apache templates

我有我的开发服务器(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/

相关文章:

python - 无反向匹配 : Unable to set named group in URL in Django

mysql - xampp 无法连接到本地主机

apache - .htaccess 将 https 重定向到 http 不起作用

json - Avro 不处理循环引用

javascript - Django 表单 - django-bootstrap-datepicker-plus 不呈现日期选择器

javascript - 在 asp.net 中自动发布后如何重新加载脚本?

python - Django 在模型方法上通过装饰器发送信号?

python - 摆脱 Django IOErrors

Javascript (JQuery) 和 Bootstrap 模态

javascript - 由 : com. intuit.karate.exception.KarateException: ReferenceError: "XMLHttpRequest"is not defined Karate 配置 js 文件中的异常引起