模板继承与Django中的模板继承一样。 参考:https://blog.csdn.net/houyanhua1/article/details/85004048
templates/base.html(模板,父模板):
{% block top %}
顶部菜单(子模板可以使用父模板中的默认内容,也可以重写)
{% endblock top %}
{% block content %}
{% endblock content %}
{% block bottom %}
底部
{% endblock bottom %}
templates/demo.html(模板,子模板,模板继承):
{% extends 'base.html' %}
{% block content %}
需要填充的内容
{% endblock content %}
Jinja2模板还支持模板包含
它的功能是将另一个模板整个加载到当前模板中,并直接渲染。
示例:
include的使用
{% include 'hello.html' %}
包含在使用时,如果包含的模板文件不存在时,程序会抛出TemplateNotFound异常,可以加上ignore missing关键字。如果包含的模板文件不存在,会忽略这条include语句。
示例:
include的使用加上关键字ignore missing
{% include 'hello.html' ignore missing %}
- 宏、继承、包含:
- 宏(Macro)、继承(Block)、包含(include)均能实现代码的复用。
- 继承(Block)的本质是代码替换,一般用来实现多个页面中重复不变的区域。
- 宏(Macro)的功能类似函数,可以传入参数,需要定义、调用。
- 包含(include)是直接将目标模板文件整个渲染出来。