我有如下的django模板:
<a href="https://example.com/url{{ mylist.0.id }}" target="_blank"><h1 class="title">{{ mylist.0.title }}</h1></a>
<p>
{{ mylist.0.text|truncatewords:50 }}<br>
...
(实际模板非常大)
它应该在同一页面上使用10次,但“外部”html元素是不同的:
<div class="row">
<div class="col-md-12 col-lg-12 block block-color-1">
*django template here - mylist.0, truncatewords:50 *
</div>
</div>
<div class="row">
<div class="col-md-4 col-lg-4 block block-color-2">
*django template here - mylist.1, truncatewords:15 *
</div>
<div class="col-md-8 col-lg-8 block block-color-3">
*django template here - mylist.2, truncatewords:30 *
</div>
</div>
...
即使使用for
,考虑first
,last
,奇数和偶数元素也不会简化任务。
如果只将模板(在开头给出)定义一次,我该怎么做?
答案 0 :(得分:3)
您可以使用包含标记。它是内置代码的一部分:https://docs.djangoproject.com/en/1.8/ref/templates/builtins/#include
如果您需要做一些更复杂的事情,您可以随时编写自己的模板标签:https://docs.djangoproject.com/en/1.8/howto/custom-template-tags/
答案 1 :(得分:3)
您可以使用include
标记为包含的模板提供一致的变量名称:
例如:
parent.html
<div class="row">
<div class="col-md-12 col-lg-12 block block-color-1">
{% include 'templates/child.html' with list_item=mylist.0 t=50 only %}
</div>
</div>
child.html
{{ list_item.text|truncatewords:t }}
更新:建议 spectras ,您可以在标记中使用 with 和 only 关键字为所包含的模板提供必要的上下文。