多个模板具有完全相同的顶部和底部内容
多个模板中具有相同的模板代码内容,但是内容中部分值不一样
多个模板中具有完全相同的 html 代码块内容
像遇到这种情况,可以使用 JinJa2 模板中的 继承 来进行实现
模板继承是为了重用模板中的公共内容。一般Web开发中,继承主要使用在网站的顶部菜单、底部。这些内容可以定义在父模板中,子模板直接继承,而不需要重复书写。
不支持多继承
为了便于阅读,在子模板中使用extends时,尽量写在模板的第一行。
不能在一个模板文件中定义多个相同名字的block标签。
当在页面中使用多个block标签时,建议给结束标签起个名字,当多个block嵌套时,阅读性更好。
from flask import Flask,render_template app = Flask(__name__, # 当前flask应用运行的模块 template_folder="templates" ) @app.route("/") def index(): data = {} return render_template( "index6.html", **data ) if __name__ == ‘__main__‘: app.run(debug=True)
#index6.html {% extends "base.html" %} {% block title %}来自子模板的标题{% endblock title %} {% block hander %} <script> alert(1) </script> {% endblock hander %} {% block content %} {{ super() }} <p>子模板的内容</p> {{ super() }} {% endblock %}
#bases.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>{% block title %}父级模板的内容{% endblock %}</title> {% block hander %}{% endblock hander %} </head> <body> {% block content %} <p>父级模板的content</p> {% endblock content %} </body> </html>
原文:https://www.cnblogs.com/zhangjiahao996/p/14021807.html