如何在 Django 模板中使用模板?
How to use template within Django template?
我有如下的 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次,但是'external' 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>
...
考虑到 first
、last
、奇数和偶数元素,看起来 for
的偶数使用不会简化任务。
如何使模板(开头给出的)只定义一次?
您可以为此使用包含标记。它是内置标签的一部分:https://docs.djangoproject.com/en/1.8/ref/templates/builtins/#include
如果你需要做一些更复杂的事情,你可以随时编写自己的模板标签:https://docs.djangoproject.com/en/1.8/howto/custom-template-tags/
您可以使用 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和只有标签内的关键字,以便为包含的模板提供必要的上下文。
我有如下的 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次,但是'external' 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>
...
考虑到 first
、last
、奇数和偶数元素,看起来 for
的偶数使用不会简化任务。
如何使模板(开头给出的)只定义一次?
您可以为此使用包含标记。它是内置标签的一部分:https://docs.djangoproject.com/en/1.8/ref/templates/builtins/#include
如果你需要做一些更复杂的事情,你可以随时编写自己的模板标签:https://docs.djangoproject.com/en/1.8/howto/custom-template-tags/
您可以使用 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和只有标签内的关键字,以便为包含的模板提供必要的上下文。