4

我有一个包含以下内容的模板:{% extends "main/main-template.html" %} 我也想要一个完全相同的模板,只是代替它{% extends "main/main-template-quick.html" %}只是将其复制并粘贴到新文件中似乎违反了 DRY,这样我就可以更改模板。有没有办法动态选择超级模板?

如果没有,是否有一种好方法来执行以下操作: 使用{% block %}不同的模板重复使用相同的内容及其内容。同时,不违反 DRY。

我也对可能能够做到这一点的其他模板语言持开放态度。

4

2 回答 2

6

如果您查看文档,您会看到它也extends接受一个变量。

{% extends variable %} 使用变量的值。如果变量的计算结果为字符串,Django 将使用该字符串作为父模板的名称。

因此,您可以轻松地在视图中确定合适的基本模板并将其传递给您的模板。

如果你想在不同的上下文中重用一大块 html,那么include标签就是你的朋友。

于 2013-07-16T16:47:11.530 回答
2

Django 允许使用{{ block.super}}.

这允许您插入父级的块内容。

{% block content %}
  {{ block.super }}
{% endblock content %}

block.super旨在让您

使用不同的模板重用相同的 {% block %} 及其内容。

于 2013-07-16T16:49:03.180 回答