【发布时间】:2013-06-16 06:29:50
【问题描述】:
我有一个模板,我正在插入包含标签:
{% include 'template.html' %}
在另一个地方,我希望它的内容显示为原始内容。我怎样才能做到这一点?
【问题讨论】:
我有一个模板,我正在插入包含标签:
{% include 'template.html' %}
在另一个地方,我希望它的内容显示为原始内容。我怎样才能做到这一点?
【问题讨论】:
你可以试试这样的:
page1.html
{%with flag="norender" %}
{% include "template.html" %}
{%endwith%}
模板.html
{%if flag == "norender" %}
{%verbatim%}
{%endif%}
{#your html #}
{%if flag == "norender" %}
{%endverbatim%}
{%endif%}
【讨论】:
{%endif%} 不是在第一字下面,没有if 对应部分吗?
{% verbatim %} 和 {% endverbatim %} 之间的 django 标签被渲染,呃,逐字逐句。
我最终创建了一个模板标签来执行此操作:
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>
而不是:
这是我的模板
【讨论】:
escape(),但除此之外似乎效果很好。谢谢!
escape()(现在是 Django 2.1)。
在 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)
【讨论】: