20 Django 模板继承机制详解

20 Django 模板继承机制详解

Django 的模板继承机制是其强大且灵活的一部分,可以帮助我们减少代码重复,提高开发效率。本文将通过示例来详细讲解这一机制。

模板的基本概念

在 Django 中,模板是用于生成 HTML 内容的文本文件。模板文件通常使用 .html 后缀,内容可以包含静态 HTML 以及动态的 Django 模板语言。

1. 基础模板

首先,我们需要创建一个基础模板——base.html。这个模板一般包含页面的整体结构,比如头部、尾部和一些公共的元素。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<!-- templates/base.html -->
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>{% block title %}我的网站{% endblock %}</title>
<link rel="stylesheet" href="{% static 'css/style.css' %}">
</head>
<body>
<header>
<h1>我的网站头部</h1>
<nav>
<ul>
<li><a href="/">首页</a></li>
<li><a href="/about/">关于</a></li>
</ul>
</nav>
</header>

<main>
{% block content %}
<!-- 页面内容将放在这里 -->
{% endblock %}
</main>

<footer>
<p>版权 © 2023</p>
</footer>
</body>
</html>

2. 继承基础模板

现在,我们来创建一个特定的页面模板,比如 home.html,让它继承 base.html

1
2
3
4
5
6
7
8
9
<!-- templates/home.html -->
{% extends "base.html" %}

{% block title %}首页{% endblock %}

{% block content %}
<h2>欢迎来到我的网站</h2>
<p>这是首页的内容。</p>
{% endblock %}

在这个例子中,home.html 使用了 {% extends "base.html" %} 来继承基础模板。我们在 home.html 中重写了两个块:titlecontent

3. 创建其它页面

我们可以通过类似的方式创建其他页面,比如 about.html

1
2
3
4
5
6
7
8
9
<!-- templates/about.html -->
{% extends "base.html" %}

{% block title %}关于我们{% endblock %}

{% block content %}
<h2>关于我们</h2>
<p>这是关于我们页面的内容。</p>
{% endblock %}

4. 使用包含(include)

为了进一步复用代码,Django 还支持 include 标签。假设我们有一个 navigation.html 文件,专门用于导航条。

1
2
3
4
5
6
7
<!-- templates/navigation.html -->
<nav>
<ul>
<li><a href="/">首页</a></li>
<li><a href="/about/">关于</a></li>
</ul>
</nav>

然后我们可以在 base.html 中包含这个导航:

1
2
3
4
<header>
<h1>我的网站头部</h1>
{% include "navigation.html" %}
</header>

5. 渲染模板

最后,我们需要在 Django 视图中渲染这些模板。以下是一个简单的视图示例:

1
2
3
4
5
6
7
8
# views.py
from django.shortcuts import render

def home(request):
return render(request, 'home.html')

def about(request):
return render(request, 'about.html')

6. 路由配置

不要忘记在 urls.py 中配置路由:

1
2
3
4
5
6
7
from django.urls import path
from .views import home, about

urlpatterns = [
path('', home, name='home'),
path('about/', about, name='about'),
]

总结

通过以上的示例,我们学习了 Django 模板的继承机制。它让我们可以轻松地创建一个统一的页面结构,同时又能根据需要自定义每个页面的内容。通过 blockinclude 的结合使用,我们能够更加灵活地管理和重用我们的模板代码。使用模板继承,编写 Django 应用将变得更加高效和便捷。

20 Django 模板继承机制详解

https://zglg.work/django/20/

作者

AI教程网

发布于

2024-08-08

更新于

2024-08-10

许可协议