六、jinja2-模版继承

64 阅读1分钟

一个网站大部分网页的模块都是重复的,如顶部的导航栏、底部的备案信息,如果在每个页面都重复的写,会让项目变得臃肿,增加后期的维护成本,可以通过模版继承的方式,把一些重复性的代码写在父模版中,子模版继承父模版后,再分别实现自己页面的代码

下面是一个父模版

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
<!--这是标题标签,可进行自定义-->
    <title>{% block title %}{% endblock %}</title>4
</head>
<body>

<!-- 这是顶部标题标签-->
<ul>
    <li><a href="#">首页</a></li>
    <li><a href="#">新闻</a></li>
</ul>

<!--这是内容标题,可进行自定义-->
{% block body %}
{% endblock %}

<!--这是底部标题-->
<footer>底部导航条</footer>
</body>
</html>

下面是child1和child2两个HTML文件继承自base.html

{% extends "base.html" %}

{% block title %} 我是child1的标题 {% endblock %}

{% block body %} 我的child1的内容 {%endblock%}
{% extends "base.html" %}

{% block title %} child2标题 {% endblock %}

{% block body%} 我是child2内容 {% endblock%}

下面是APP.py文件

from flask import Flask,render_template

app = Flask(__name__)

@app.route("/child1")
def child():
    return render_template("child1.html")

@app.route("/child2")
def child2():
    return render_template("child2.html")

if __name__ == '__main__':
    app.run(debug=True,host="0.0.0.0",port=8000)