Django的逐字模板标记不会阻止字符转义

时间:2013-10-11 14:58:53

标签: django django-templates underscore.js

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

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

一个非常简单的例子:

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

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

&lt;%= content %&gt;

显然,当Underscore获取HTML时,由于无法找到要解析的正确标记,因此无需执行任何操作。我已经尝试了几个故障排除解决方案,但没有一个有效:

  1. 错误拼写'逐字'会导致错误,让我相信Django的模板引擎正在识别标签。
  2. 检查django版本。用'import django; django.VERSION'我得到1.5.3。
  3. 使用{%autoescape off%}标记,但同样不起作用(可能是相关问题)。
  4. 以下是我的模板的完整文本,以便提供任何进一步的线索。除{%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 %}
    

1 个答案:

答案 0 :(得分:0)

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

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

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