3

我正在使用 Django 的内置模板系统以及 Underscore.js。因此,我需要 Django 留下 Underscore 识别和呈现的特殊字符。

我检查了django的版本,它是1.5.3。

一个非常简单的例子:

{% verbatim %}
   <%= content %>
{% endverbatim %}

但是,当我在浏览器中查看时,源代码仍然显示:

&lt;%= content %&gt;

显然,当 Underscore 获得 HTML 时,它没有工作要做,因为它找不到要解析的正确标签。我已经尝试了几个故障排除解决方案,但都没有奏效:

  1. 拼写错误 'verbatim' 会导致错误,让我相信 Django 的模板引擎正在识别标签。
  2. 检查 django 版本。用'import django; django.VERSION' 我得到 1.5.3。
  3. 使用 {% autoescape off %} 标记,同样不起作用(可能是相关问题)。

这是我的模板的完整文本,以防提供任何进一步的线索。除了 {% verbatim %} 之外的所有标签都执行它们应该执行的任务。

{% extends "base.html" %}

{# Determine which navigation element is 'active'  #}
{% block nav %}
    {% with 'active' as lessons_active %}
        {{ block.super }}
    {% endwith %}
{% endblock %}

{% block content %}

<div class="col-md-2 lesson-left-menu">
    <a href="#"><span class="glyphicon glyphicon-arrow-left"></span> Back to Lessons</a>
</div>
<div class="col-md-8 lesson-container">

        <div class="slide multi-slide">
            <div class="lesson-header">
                {% verbatim %}
                    <h3><%= moduleTitle  %> <small><%= title %></small></h3>
                {% endverbatim %}
            </div>

            <!-- Populate dyn. based on # slides in lesson -->
            {% spaceless %}
                <div class="lesson-progress">
                    <div class="bar complete" style="width: 20%"></div>
                    <div class="bar complete" style="width: 20%"></div>
                    <div class="bar" style="width: 20%"></div>
                    <div class="bar" style="width: 20%"></div>
                    <div class="bar" style="width: 20%"></div>
                </div>
            {% endspaceless %}

            {% verbatim %}
                <%= content %>
            {% endverbatim %}

            <div class="well">
                <ul class="answers short-multi greek-text" style="min-height: 40px">
                </ul>
            </div>

            {% spaceless %}
                {% verbatim %}
                <% _.each(options, function(optionSet) { %>
                    <ul class="options short-multi greek-text inline">

                        <% _.each(optionSet, function(option) { %>
                            <li><a href="#" data-value="<%= option.value  %>"><%= option.display %></a></li>
                        <% }); %>

                    </ul>
                <% }); %>
                {% endverbatim %}
            {% endspaceless %}

        </div>
</div>
{% endblock %}
4

1 回答 1

0

您是否已经尝试过没有将代码包装在这些块中(我知道这是一个延伸)。

在你的情况下,你不应该做任何事情来正确渲染。我在我的 Django 项目中有相同的设置。

{% autoescape off %}除非您将文本注入页面(通过变量或其他东西),否则您不必转身,{% Verbatim %}除非您想忽略 django 标签,否则您不必使用。

于 2014-01-16T20:26:39.673 回答