Django入门教程

前言

第一章: django快速入门

第二章: django MTV架构

第三章: django视图

第四章: django模板

第五章: django模型

第六章: django后台管理系统

第七章: 项目实战-简易的博客系统

第八章:django表单

第九章:django用户认证系统

第十章:django中的会话

第十一章:django安全

第十二章:django性能优化

第十三章:django实用工具

首页 > Django入门教程 > 第四章: django模板 > 4.4节: django模板继承

4.4节: django模板继承

薯条老师 2020-07-22 17:27:25 232516 0

编辑 收藏

广州番禺Python, Java小班周末班培训

薯条老师在广州做Python和Java的小班培训,一个班最多10人,学员的平均就业薪资有11K不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析,Python量化投资,Python机器学习,Java中高级后端开发。授课详情请点击:http://chipscoco.com/?cate=6

4.4.1 模板继承的核心流程

django中的模板语言借鉴了面向对象的设计思想,可以对模板进行继承。通过模板继承,可以对模板代码进行复用,减少冗余。在django中进行模板继承的核心流程:

(1) 定义一个总体架构的模板页面,作为基准页面

在基准页面中定义block标签,子级模板在继承时可以覆盖block标签中的内容。

 (2) 从基准页面中进行继承,并覆盖基准页面的内容

在django中使用extends标签从基准页面中进行继承,并在必要时可以覆盖基准页面block标签中的内容。

 4.4.2 基准页面

网页的逻辑结构可简化为下图所示的四个组成部分:html头部,页面主体内容,侧边栏,页尾。

  

html头部对应的是html中的head标签,用来定义网页的属性(例如网页的标题,字符编码等),以及加载外部的js脚本文件、css样式文件。页面主体(包含页面的导航栏),侧边栏,页尾等在<body>标签中进行定义。页面的逻辑结构所对应的html代码:

<html>
{# 页面的html头部 #}
<head>
<link rel="stylesheet">
<script></script>
<title></title>
</head>
 
 
<body>
{# 页面的侧边栏 #}
<div id="sidebar">
</div>
 
{# 页面的主体内容 #}
<div id="content">
</div>
 
{# 页面的尾部内容#}
<div id="foot">
</div>
 
</body>
</html>

上文的html代码中,定义了网页的整体结构,在实际开发中通常将其作为django模板的基准页面。在上文的代码中只定义了基本结构,在浏览器中打开时显示的是一个空白的网页,通过django中的block标签可以定义默认显示的内容,子模板继承时对block标签的内容进行覆盖可以实现内容的定制化。

 4.4.3 block标签

django block标签的使用语法:

{% block tag_name %}
{% endblock tag_name%}

tag_name表示block标签的名称,在模版中不能定义相同名称的block标签。现在通过block标签,来丰富基准页面的内容。使用block标签后的基准页面:

<html>
{# 页面的html头部 #}
<head>
{% block css %}
<link rel="stylesheet" />
{% endblock css %}
 
{% block js %}
<script></script>
{% endblock js %}
 
<title>
{% block title %}
django的美妙爵士乐
{% endblock title %}
</title>
 
</head>
 
 
<body>
{# 页面的侧边栏 #}
<div id="sidebar">
    {% block sidebar %}
    <ul>
        <li><a href="/">首页</a></li>
        <li><a href="/blog/">博客</a></li>
        <li><a href="/help/">帮助</a></li>
    </ul>
   {% endblock sidebar %}
</div>
 
{# 页面的主体内容 #}
<div id="content">
    {% block content %}
    <p>基准页面的主体内容</p>
    {% endblock content %}
</div>
 

{# 页面的尾部内容 #}
<div id="foot">
    {% block foot %}
    <p>基准页面的尾部内容</p>
    {% endblock foot %}
    </div>
    
</body>
</html>

4.4.4 从模板中进行继承

定义完基准页面和block标签以后, 使用extends标签来进行模板继承。 读者要注意的是,extends标签必须出现在其它模板标签的前面。django extends标签的使用语法:

{% extends "template_name" %}

template_name表示模板文件的名称,例如基准页面的名称为base.html,则模板继承的代码为:

{% extends "base.html" %}

子级模板在继承时,通过相应的block标签可以对父模板中的内容进行覆盖,未覆盖的标签会使用标签的默认值。以4.4.3节中的基准页面为例,假设基准页面名称为base.html:

{% extends "base.html" %}

{% block title %} 
Jazz Of Django 
{% endblock title %}


{% block content %} 
<p>子级模板的主体内容 </p>
{% endblock content %}


{% block foot %} 
<p>子级模板的尾部内容 </p> 
{% endblock foot %}

在上文的模板代码中,使用了extends从模板base.html中进行继承,并分别覆盖了title标签,content标签,foot标签中的内容。django在对该模板进行渲染时,会生成如下的html代码:

<html>
<head>
<link rel="stylesheet" />
<script></script>
 
<title>
Jazz Of Django
</title>
 
</head>
 
<body>
<div id="sidebar">
    <ul>
        <li><a href="/">首页</a></li>
        <li><a href="/blog/">博客</a></li>
        <li><a href="/help/">帮助</a></li>
    </ul>
</div>
 

<div id="content">
    <p>子级模板的主体内容</p>
</div>
 

<div id="foot">
    <p>子级模板的尾部内容</p>
</div>

</body>
</html>

4.4.5 最具实力的小班培训

薯条老师在广州做Python和Java的小班培训,一个班最多10人。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。打算参加小班培训的同学,必须遵守薯条老师的学习安排,认真做作业和项目。把知识学好,学扎实,那么找到一份高薪的工作就是很简单的一件事。

(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,包拿Offer
(3) 数据分析高薪就业班,月薪11K-15K, 免费领取课程大纲
(4)
Python大数据挖掘,量化投资就业班,月薪12K-25K,免费领取课程大纲

扫码免费领取Python学习资料:


欢迎 发表评论: