包括模板作为逐字

时间:2013-06-16 06:29:50

标签: django django-templates

我有一个模板,我正在插入包含标签:

{% include 'template.html' %}

另外在另一个地方我希望它的内容显示为原始内容。我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:3)

您可以尝试以下内容:

page1.html

{%with flag="norender" %}
    {% include "template.html" %}
{%endwith%}

template.html

{%if flag == "norender" %}
    {%verbatim%}
{%endif%}
        {#your html #}
{%if flag == "norender" %}
    {%endverbatim%}
{%endif%}

答案 1 :(得分:1)

我最终创建了一个模板标签来执行此操作:

from django import template
from django.template.loader import get_template
from django.utils.html import escape

register = template.Library()

@register.simple_tag()
def verbatim_include(name):
    """
    Example: {% verbatim_include "weblog/post.html" %}
    """
    template = get_template(name)
    return escape(template.render())

我不知道它是否是最好或最有效的方法,但它对我来说似乎没问题(Django 1.11)。

在我的主模板中,我将包含另一个这样的内容:

<pre><code>{% verbatim_include 'my_template.html' %}</code></pre>

如果my_template.html是这样的话:

<b>This is my template</b>

然后在浏览器中我会看到:

<b>This is my template</b>

而不是:

这是我的模板

答案 2 :(得分:0)

在Django 1.11上测试:

from django import template
from django.template.loader import get_template
from django.utils.safestring import mark_safe


register = template.Library()


@register.simple_tag
def verbatim_include(name):
    """
    Example: {% verbatim_include "weblog/post.html" %}
    """
    template = get_template(name)
    source = template.template.source
    return mark_safe(source)