模板继承

在模板中,可能会遇到以下情况:

  • 多个模板具有完全相同的顶部和底部内容

  • 多个模板中具有相同的模板代码内容,但是内容中部分值不一样

  • 多个模板中具有完全相同的 html 代码块内容

像遇到这种情况,可以使用 JinJa2 模板中的 继承 来进行实现

模板继承是为了重用模板中的公共内容。一般Web开发中,继承主要使用在网站的顶部菜单、底部。这些内容可以定义在父模板中,子模板直接继承,而不需要重复书写。

 

模板继承使用时注意点:

  1. 不支持多继承

  2. 为了便于阅读,在子模板中使用extends时,尽量写在模板的第一行。

  3. 不能在一个模板文件中定义多个相同名字的block标签。

  4. 当在页面中使用多个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