我有一个第三方应用程序,该应用程序定义了一堆模板(有点类似于django-admin的工作方式)。基本模板定义了一个包含一些内容的块:
base.html:
<!doctype HTML>
<html><head>
<!-- blah blah -->
{% block very_kewl %}
<marquee><b><i><u>this is very kewl</marquee></b></i></u>
<!-- disclaimer: this is not valid HTML! -->
{% endblock very_kewl %}
</html>
然后,子模板清除该块:
actual_page.html:
{% extends 'base.html' %}
{# very many other stuff, part 1 #}
{% block very_kewl %}{% endblock %}
{# very many other stuff, part 2 #}
我想要实现的是将“非常扭曲”的内容保留在页面上。
一种可行的方法是简单地将整个actual_page.html
复制到项目模板目录中,并省略行{% block very_kewl %}{% endblock %}
。这行得通,但缺点是我还必须重复模板的所有其他部分,其中一些将来可能会更改。
所以问题是如何显示基本模板中的“非常扭曲”的内容而又不重复actual_page.html
中的所有其他内容?
理想情况下,我可以做类似的事情,但这当然行不通:
project_templates/actual_page.html:
{% extends 'actual_page.html' %}
{% block very_kewl %}{{ block.super.super }}{% endblock %}
答案 0 :(得分:0)
为什么不将基本模板块中使用的HTML保留为单独的模板?
project_template/partials/very_kewl.html
<marquee><b><i><u>this is very kewl</marquee></b></i></u>
<!-- disclaimer: this is not valid HTML! -->
现在,只需在需要使用HTML的地方添加它即可。
project_template/base.html
<!doctype HTML>
<html><head>
<!-- blah blah -->
{% block very_kewl %}
{% include 'partials/very_kewl.html' %}
{% endblock very_kewl %}
</html>
在孙子project_templates/actual_page.html
{% extends 'actual_page.html' %}
{% block very_kewl %}{% include 'partials/very_kewl.html' %}{% endblock %}
因此,即使在某个时候清除了该块,该模板的子元素也可以简单地包含所需的HTML。