文章目录
一、常见复用
include:适合固定不变的继承(如开头和结尾)
关注点:include更适合做一些小量的继承(如开头和结尾)
具体可见:https://blog.csdn.net/pick_ears/article/details/122084013
宏maroc:可在本页面或其它页面进行多次局部调用
作用:相当于类里面创建一个方法,可以在本html页面进行多次调用使用,也可以导入到其它HTML,实例化进行使用
优点:高效、便利
block:对父模板某个block进行重写,不重写部分全部应用
澄清
宏不是模板继承!
有一些相同的代码,我们可以使用模板继承 base.html 将刚刚写的index.html的内容拿到base.html 模板中
不使用宏以及import的原因:宏只适用于调用,不能够重写!模板继承:就是block
二、模板继承block
前言
面向对象的特征:继承、多态、封装
模板继承,相似于类的继承
Flask中的模板可以继承,通过继承可以把模板中许多重复出现的元素抽取出来,放在父模板中,并且父模板通过定义block给子模板开一个口,子模板根据需要,再实现这个block,假设现在有一个base.html这个父模板
心
应用场景:一些include不适合的场景,有批量重复的地方,但也有少许要修改的地方
相当于类的重写
作用
作用:
1、将相似的代码抽离出来,减少代码的重复率
2、可以在子模板中重写方法
关键:在基类中使用block,还需要给指定的block进行命名
语法
父模板中定义基类,子模板中使用父模板中的类,可以使用block进行重写某个block
父模板base.html中
{% block header %}
<ul>
<li>国际</li>
<li>军事</li>
<li>时事</li>
<li>娱乐</li>
</ul>
{% endblock %}
子模板中index.html
1、继承父模板
{% extends 'base.html' %}
如果不重写父模板中指定的block,则默认显示该block
注意:若子类中不重写block,则默认显示base中所有的block
案例
若是想要将base.html中的title改掉
利用block修改父模板 在base.html中写
如果在子模板中,不重写父类,则会默认全显示
重写父模板
父模板base.html中
{% block footer %}
<div class="footer">
这是网页尾部
</div>
{% endblock %}
子模板中
{% block footer %}
<div class="footer">
wangyeweibu
</div>
{% endblock %}
嵌套使用模板
嵌套也可以在子模板中写,也可以进行修改
父模板base.html中
{% block footer %}
<div class="footer">
这是网页尾部
{% block foo %}
<div class="foo">
foo
</div><