我有一堆代码,我需要在页面上和多个页面上重复使用。例如,以下是代码的较短版本:
<a href="#"
data-toggle="popover"
title="{% for terms in s_terms %}{% if terms.slug == 'neuron' %}{{terms.title}}{% endif %}{% endfor %}"
data-content="{% for terms in s_terms %}{% if terms.slug == 'neuron' %}{{terms.para_one}}{% endif %}{% endfor %}">
Toggle popover
</a>
块中有更多代码。现在,出于显而易见的原因,我不想继续重复这么大的代码块。我是DRY方法的粉丝。
但是,我无法弄清楚如何重复渲染同一段代码。唯一可以改变的是那里的单词=“neuron”。我想过使用模板标签,但这不起作用。
我尝试将代码保存为单独的文件,并在我的模板中继承它,但后来我无法更改关键字('neuron')。我也尝试创建一个单独的动态页面,并在我的Django模板中包含它,但看起来include标签只适用于模板,而不适用于动态页面。
有人可以帮忙吗?提前谢谢你。
答案 0 :(得分:3)
您可以使用Django模板内置模板标记include。
来自文档:
加载模板并使用当前上下文呈现它。这是一个 在模板中“包含”其他模板的方式。
因此,您可以在单独的模板中提取您的代码段,然后将其用于:
{% include "snippet_template.html" %}
此外,您可以使用with
关键字将变量传递给包含模板 - 您可以使用它来传递word
参数:
{% include "snippet_template.html" with word="neuron" %}
答案 1 :(得分:2)
正如@bonidjukic所写,include
语句就是你搜索的内容。
但for循环中的include
语句可能会达到Django模板Engine(vs Jinja)的一个弱点。你只包括变量,所以它会很快。
在需要标签(如trans
)的情况下,Django会在每个包含标签时加载标签。 Jinja将拥有全球&#34;标签&#34;。
所以请小心,你要如何干你的模板。