Flask模板代码复用三要素

宏的概念

宏是Jin ja2中的函数,调用后,直接返回一个模板或者字符串
当模板中出现大量重复功能代码的时候,可以使用宏来进行封装

定义和使用宏

  • 定义宏,可以在当前文件或其他文件
{% macro input(name,value='',type='text') %}
    
{% endmacro %}
  • 使用当前文件宏
{{ input('name' value='zs')}}
  • 使用其他文件宏
    {%import 'filename.html' as 别名%}
    {%别名.函数名(参数)%}

模板继承

继承的概念

将公共的内容抽取到父类模板,共子类使用的形式称为继承
一般web开发中,继承主要使用在网站的顶部菜单,底部。这些内容可以定义在父模板中,子模板直接继承,而不需要重复书写

继承的格式

  • 父模板中使用多个block组成,格式:'''python
- 子模板使用
- 子模板使用格式: 
- 继承后,子类完全拥有父类内容,并且子类可以进行重写,如果写保留父类内容使用: super()


### 三.代码展示
#### 父模板
- base.html

```python
{% block top %}
  顶部菜单
{% endblock top %}

{% block content %}
  正文内容
{% endblock content %}

{% block bottom %}
  底部
{% endblock bottom %}
  • 子模板
{% extends 'base.html' %}
{% block content %}
 需要填充的内容
{% endblock content %}
  • 模板继承使用时注意点:
    1,不支持多继承
    2,为了便于阅读,在子模板中使用extends时,尽量写在模板的第一行
    3,不能在一个模板文件中定义多个相同名字的block标签
    4,定义block模板的时候,一定要加上endblock结束标记

包含

包含的概念

Jinja2模板中,除了宏和继承,还支持一种代码重用的功能,叫包含
它的功能是将另一个模板整个加载到当前模板中,并直接渲染

包含的使用

格式:

{% include 'hello.html' %}
或者
{% include 'hello.html' ignore missing %}
  • 提示:ignore missing加上后如果文件不存在,不会报错

代码展示




    
    Title


    {% include '其他模板文件' ignore missing %}


小结

  • 宏、继承、包含均能实现代码的复用
  • 继承额本质是代码替换,一般用来实现多个页面中重复不变的区域
  • 宏的功能类似函数,可以传入参数,需要定义、调用
  • 包含是直接将目标模板文件整个渲染出来

你可能感兴趣的:(Flask模板代码复用三要素)