继承的作用就是复用代码。在多次使用的代码中间可变部分使用block块,例如: <title>{% block title%}{%endblock%}</title> ,{% block main %} {% endblock %}
其它页面使用{% extends "base.html" %}来调用(继承)该页面,并修改其中的块部分内容,实现代码复用。
如导航栏的实现就需要在模板中定义一个导航栏,其他页面使用继承即可:
新建一个base.html,而block main的部分就是导航栏下每个页面不同的接口,由每个页面负责实现。index.html和login.html页面通过对base的继承即可
base.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{% block title%}{%endblock%}</title> #定义标题接口
<style>
.nav{
background:#3a3a3a;
height:70px
}
ul{
overflow:hidder;
}
ul li{
float:left;
list-style:none;
padding:0 10px;
line-height:70px;
}
ul li a{
color:#fff;
}
</style>
</head>
<body>
<div class="nav">
<ul>
<li><a href="#">INDEX</a></li>
<li><a href="#">QUESTION</a></li>
</ul>
</div>
{% block main %} #定义主体结口中
{% endblock %}
</body>
</html>
index.html
{% extends "base.html" %} #继承 base.html
{% block title %}
index #替换base.html中{% block title%}{%endblock%}部分
{% endblock %}
{% block main %}
<h1>This is index Page!</h1> #替换base.html中{% block main %}{% endblock %} 部分
{% endblock %}
{% endblock %}
login.html
{% extends "base.html" %} #继承 base.html
{% block title %}
login #替换base.html中{% block title%}{%endblock%}部分
{% endblock %}
{% block main %}
<h1>This is login Page!</h1> #替换base.html中{% block main %}{% endblock %} 部分
{% endblock %}
app.py #pyton文件逻辑
#-*- coding:utf-8 -*-
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def index():
return render_template("index.html") #渲染index.html
@app.route("/login/")
def login():
return render_template("login.html") #渲染login.html
if __name__ == "__main__":
app.run(debug=True)
结果部分:访问127.0.0.1:5000 和