Django中的模板引擎中,子模板继承父模板中是这样实现的。
在父模板(假设url为:dad.html)中,
<!doctype html>
<head>
...
{% block title %}
<title>aaa</title>
{% endblock %}
</head>
<body>
{% block content %}
<div>
<p>aaa</p>
</div>
{% endblock %}
{% block text %}
<h1>我没有被覆盖</h1>
{% endblock %}
</body>
</html>
在子模板(假设url为:child.html)中没有任何东西,只有以下代码
{% block title %}
<title>bbb</title>
{% endblock %}
{% block content %}
<div>
<p>bbbbb</p>
</div>
{% endblock %}
当我们打开了子模板的路径后,子模板中block包含的东西为覆盖掉父模板中同名block所包含的东西。若父模板中有东西没有被子模板覆盖,如上面父模板中的text。那么父模板中名为text的block的内容将会被继承下来到子模板中显示。
需要注意的是:
1. block的格式为:{% block name %}…{% endblock %}
2. block中,前面的百分号的后面需要有空格,后面的百分号前面需要有空格。必须按格式来,否则模板引擎会识别不了
3. 说到底,子模板的继承其实就是 替换掉 父模板中同名的block块,其余没有被替换掉的就被子模板原封不动的继承了下来。