我有一个包含以下内容的模板:{% extends "main/main-template.html" %}
我还想要一个完全相同的模板,而不是{% extends "main/main-template-quick.html" %}
只是复制并粘贴相同的代码似乎违反了DRY进入一个新文件,这样我就可以更改模板了。有没有办法动态选择超级模板?
如果没有,是否有一种很好的方法可以执行以下操作:使用不同的模板重复使用相同的{% block %}
及其内容。同时,不要违反DRY。
我也对其他能够做到这一点的模板语言持开放态度。
答案 0 :(得分:5)
如果您check the docs,您会看到extends
也接受变量。
{%extends variable%}使用变量的值。如果变量 计算结果为字符串,Django将使用该字符串作为名称 父模板。
因此,您可以轻松地在视图中确定适当的基本模板,并将其传递给模板。
如果你想在不同的情境中重复使用一大块html,那么include
标签就是你的朋友。
答案 1 :(得分:2)
Django允许使用{{ block.super}}
显示父模板块内容。
这允许您插入父级的块内容。
{% block content %}
{{ block.super }}
{% endblock content %}
block.super
旨在让您
使用不同的模板重复使用相同的{%block%}及其内容。