在模板中多次包含动态代码段

时间:2014-03-25 10:46:53

标签: django django-templates

假设我有一个简单的代码段,我想在我的网站上重复一遍(有时每页多次):

<div class="snippet-css">
  <h1>{% block snippet-header %}{% endblock %}</h1>

  <div class="snippet-content">
  {% block snippet-content %}
  {% endblock %}
  </div>

  <div class="snippet-footer">
  {% block snippet-footer%}{% endblock %}
  </div>
</div>

我想在同一页面中多次包含此代码段,每次都会使用唯一内容替换代码段标题,代码段内容和代码段页脚块。

定义一个django标签,它接受这两个块作为参数对我来说不好看(HTML代码锁定在Django标签内):

{% generate_snippet heading content footer %}

我也发现了这篇博客文章

http://powertwenty.com/blog/index.php/python/repeating_sections_in_a_django_template

通过将代码段拆分为多个代码来处理问题。

使用Django模板实现此结果的最佳方法是什么?

2 个答案:

答案 0 :(得分:4)

您可以将值传递给Django的内置{% include %}模板标记,如下所示:

{% include "snippet.html" with header="blah" content="content" footer="lalala" %}

您也可以传递变量:

{% include "snippet.html" with header=var1 content=var2 footer=var3 %}

然后在snippet.html中:

<div class="snippet-css">
  <h1>{{ header }}</h1>

  <div class="snippet-content">
  {{ content }}
  </div>

  <div class="snippet-footer">
  {{ footer }}
  </div>
</div>

请参阅https://docs.djangoproject.com/en/dev/ref/templates/builtins/#include

答案 1 :(得分:1)

更好的选择是使用inclusion tag - 你可以在标签中定义你喜欢的任何变量,它们将被传递给模板片段进行渲染。