如何避免django模板中的奇怪空格?

时间:2015-04-16 12:48:55

标签: python html django django-templates

我正在使用django模板来渲染我的网页。在展开递归树的过程中发生了一些奇怪的事情(无空间标记没有帮助)。

这是我的递归模板:

的index.html:

<ul class="Container">
    <li class="IsRoot">
        <div class="Expand">

        </div>

        <div class="Content">
            Содержание
        </div>



    </li>

    {% include 'list.html' with data=list %}

</ul>

和list.html(作为递归部分):

<ul class="Container">
    <li class="Node ExpandClosed">
        <div class="Expand"></div>
        <div class="Content">
            <a href="/help/{{data.name}}">
                {{data.content}}
            </a>
        </div>
        {% for item in data.decendent %}
            {% include 'list.html' with data=item %}
        {% endfor %}
    </li>
</ul>

结果如下:

strange behavior

使用open(“index.html”,“r”)读取为html文件内容的文件的html内容.read()被提取为文本,而不是html:

<div id="frame" style="float:left; margin-left:310px;">
        &lt;!DOCTYPE html&gt;
        &lt;html&gt;
            &lt;head&gt;
                &lt;title&gt;hello&lt;/title&gt;
            &lt;/head&gt;
            &lt;body&gt;
                Body Great Style
            &lt;/body&gt;
        &lt;/html&gt;
</div>

而且我在元素之间也有奇怪的空白:

enter image description here

如何避免这种奇怪的行为?谢谢!

3 个答案:

答案 0 :(得分:0)

您可以autoescape off使用(小心!):

{% autoescape off %}
    {{data.content}}
{% endautoescape %}

有关详细信息,请参阅this link。您还需要查看safe

答案 1 :(得分:0)

{% spaceless %} YOUR CONTENT {% endspaceless %}

答案 2 :(得分:0)

{% spaceless %}只删除标记之间的空格,而不删除文本。它在文档中描述:https://docs.djangoproject.com/en/2.0/ref/templates/builtins/#spaceless

如果您想在文本中删除空格,可以使用自定义模板标记,例如https://gist.github.com/martinsvoboda/1bf965a8c6037c0fe1a88d89ea822df6。用法:

{% nospaces %}
<strong>
    Hello
    this is text
</strong>
{% nospaces %}

呈现

<strong>Hello this is text</strong>