Django 模板继承

什么是模板继承?

模板继承是Django模板框架中的一种特性,它允许开发者将模板划分为可重用的块。

在模板继承中,基础模板定义了一系列“可填充”块,在继承这个模板的各个子模板中可以填充这些块。这种方法将模板分成了可重用的部分,使得开发者可以更加有效地组织模板层次结构,并实现模板的复用。

模板继承的基本语法

模板继承是通过两个特殊的标签来完成的:{% extends %} 和 {% block %}。

extends标签

extends标签定义了父模板,它告诉Django这个模板是从哪个模板继承而来的。这个标签放在子模板文件的第一行,并且必须是第一个标签。

{% extends "base.html" %}

在上面的例子中,子模板将从叫做“base.html”的模板中继承。

block标签

block标签定义了可填充的块,它用来指定在父模板中某个位置可以填充什么内容。

{% block content %}这是子模板的内容{% endblock %}

在上面的例子中,子模板将覆盖父模板中名为“content”的块,并用自己的内容来填充。

模板继承的例子

为了演示模板继承的基本用法,我们来创建一个包含三个模板的简单Web应用。

首先,我们创建一个名为“base.html”的基础模板:

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>{% block title %}这是默认标题{% endblock %}</title>

</head>

<body>

<header>

<h1>网站标题</h1>

<nav>

<a href="#">链接1</a>

<a href="#">链接2</a>

<a href="#">链接3</a>

</nav>

</header>

<div id="content">

{% block content %}这是默认内容{% endblock %}

</div>

<footer>版权信息</footer>

</body>

</html>

在上面的模板中,我们定义了一个名为“title”的块和一个名为“content”的块。其中,“title”块用来定义网页的标题,而“content”块则用来定义页面的主要内容。

接下来,我们将创建一个子模板,它继承自“base.html”:

{% extends "base.html" %}

{% block title %}这是子模板的标题{% endblock %}

{% block content %}

<p>这是子模板的内容。</p>

<p><strong>这里有一个重要的信息!</strong></p>

{% endblock %}

在上面的子模板中,我们重定义了“title”块,并在“content”块中加入了一些带标签的内容。

现在,我们再次创建一个子模板:

{% extends "base.html" %}

{% block content %}

<p>这是另一个子模板的内容。</p>

<p>它不定义标题,因此使用基础模板中的默认标题和内容。</p>

{% endblock %}

在上面的子模板中,我们只覆盖了“content”块。因此,它将使用基础模板中定义的默认标题和内容。

总结

模板继承是Django模板框架中的一种重要的特性,它通过基础模板和子模板之间的继承关系,实现了模板的复用和组织。在模板继承中,基础模板定义了一系列可填充的块,在子模板中可以重定义这些块,来达到自己的需求。

后端开发标签