逻辑Flask——模板继承

一、常见复用

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><
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值