大多数动态网站使用一些常见的网站设计 - 通用的页眉,页脚,导航栏等。Django模板系统可以轻松地将这些元素存储在一个地方,从而消除重复代码。
这就是模板继承背后的哲学。
--Django设计哲学
https://docs.djangoproject.com/en/1.10/misc/design-philosophies/
模板继承
模板继承是Django模板引擎最强大也是最复杂的部分。模板继承允许用户建立网站所有通用元素的基础“骨骼”模板并定义子模板可以覆盖的blocks。
我们从一个例子开始来了解模板继承:
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="style.css" />
<title>{% block title %}My amazing site{% endblock %}</title>
</head>
<body>
<div id="sidebar">
{% block sidebar %}
<ul>
<li><a href="/">Home</a></li>
<li><a href="/blog/">Blog</a></li>
</ul>
{% endblock %}
</div>
<div id="content">
{% block content %}{% endblock %}
</div>
</body>
</html>
我们称这个模板为base.html,它定义了一个可以用于两列页面的简单HTML基本文档,子模板的工作是填充空blocks。
在这个例子中,block标签定义了三个子模板可以填充的block。block标签要做的所有事情就是告诉模板引擎子模板可能会覆盖模板的这部分内容。
子模板可能是这样的: