Django 模板继承4.2

1. Django模板继承介绍

在开发Web应用程序时,经常需要创建多个Web页面,特别是大型应用程序。这些Web页面往往需要共享一些公共元素(例如导航栏,页脚等)。为了避免在每个页面中都编写相同的代码,可以使用Django模板继承。

Django模板继承是一种用于创建Web页面的技术,它允许我们定义一个模板作为其他页面的基础。这样在其他页面中只需要编写变化的内容即可,无需重复定义与其他页面相同的结构。

1.1 继承模板的语法

要定义一个基本模板(例如base.html),可以使用({% block %})标记定义模板中的可变内容。在其他页面中使用({% extends %})标记指定要继承的基础模板,并使用({% block %})标记覆盖需要更改的交互内容。

下面是一个我们将要使用的基础模板:

<html>

<head>

<title>{% block title %}</title>

</head>

<body>

<div id="header">

{% block header %}{% endblock %}

</div>

<div id="content">

{% block content %}{% endblock %}

</div>

<div id="footer">

{% block footer %}{% endblock %}

</div>

</body>

</html>

1.2 继承模板的例子

为了演示模板继承,我们将创建一个包含标题,正文和页脚的简单网站。页面可以通过基本模板创建。我们将创建两个页面,Home页面和About页面。

首先,我们需要在主目录的templates目录中创建一个名为base.html的文件:

<!DOCTYPE html>

<html>

<head>

<title>{% block title %}{% endblock %}</title>

</head>

<body>

<div id="header">

{% block header %}<h1>Welcome to my website</h1>{% endblock %}

</div>

<div id="content">

{% block content %}{% endblock %}

</div>

<div id="footer">

{% block footer %}<p>All rights reserved. Copyright ©{% now 'Y' %}</p>{% endblock %}

</div>

</body>

</html>

我们将{% block %}标记放在包含

<div>元素中,说明这些内容可以在其他页面中更改。

接下来我们将使用以上的base.html文件创建我们的Home页面。在主目录的templates目录中,创建一个新文件home.html:

{% extends "base.html" %}

{% block title %}My Home Page{% endblock %}

{% block content %}

<p>This is my home page.</p>

{% endblock %}

在这个例子中,我们使用{% extends %}指令来指定要继承的基本模板base.html。在{% block %}标记中,我们覆盖titlecontent块,以包含页面的标题和内容。

2. Django模板继承示例代码

下面是一个完整的包含基础模板和两个页面的示例代码:

在 templates/base.html 中:

<!DOCTYPE html>

<html>

<head>

<title>{% block title %}{% endblock %}</title>

</head>

<body>

<div id="header">

{% block header %}<h1>Welcome to my website</h1>{% endblock %}

</div>

<div id="content">

{% block content %}{% endblock %}

</div>

<div id="footer">

{% block footer %}<p>All rights reserved. Copyright ©{% now 'Y' %}</p>

{% endblock %}

</div>

</body>

</html>

在 templates/home.html 中:

{% extends "base.html" %}

{% block title %}My Home Page{% endblock %}

{% block content %}

<p>This is my home page.</p>

{% endblock %}

在 templates/about.html 中:

{% extends "base.html" %}

{% block title %}About Me{% endblock %}

{% block content %}

<p>This is my about page.</p>

{% endblock %}

{% block footer %}

<p>Contact me at name@email.com</p>

{% endblock %}

我们可以使用以下命令启动我们的Django Web应用程序:

python manage.py runserver

然后在 http://127.0.0.1:8000/home/http://127.0.0.1:8000/about/ 访问您的页面。

我们可以看到Home页面使用base.html作为基本模板,并覆盖了titlecontent块。同样的,About页面也使用base.html作为基本模板,并覆盖了title,contentfooter块。

后端开发标签