在模板中多次包含动态片段

Enu*_*nuy 1 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>
Run Code Online (Sandbox Code Playgroud)

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

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

{% generate_snippet heading content footer %}
Run Code Online (Sandbox Code Playgroud)

我也找到了这篇博文

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

它通过将代码片段分成几个标签来解决问题。

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

ACG*_*ray 5

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

{% include "snippet.html" with header="blah" content="content" footer="lalala" %}
Run Code Online (Sandbox Code Playgroud)

您还可以传递变量:

{% include "snippet.html" with header=var1 content=var2 footer=var3 %}
Run Code Online (Sandbox Code Playgroud)

然后在snippet.html中:

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

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

  <div class="snippet-footer">
  {{ footer }}
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

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