web開發過程中每每存在不少相似頁面部分,例如菜單,那麼怎麼實現呢?html
能夠採起模版化,而後繼承模版 下面的例子當中base.html 就是模版文件。python
引用頁面使用{% base.html 'base.html'%} 方式繼承模版。web
可是每一個頁面不是全部內容都相同,怎麼區別處理呢?flask
子模版使用block,python當中是在子類當中本身定義本身的屬性,可是falsk的web實現這裏不是,須要在父模版base.html定義接口app
目錄以下:debug
模版base.html代碼以下:code
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .nav{ background: #3a3a3a; height: 65px; } ul{ overflow: hidden; } ul li{ float: left; list-style: none; padding: 0 10px; line-height: 65px; } ul li a{ color: #ffffff; } </style> </head> <body> <div class="nav"> <ul> <li><a href="#">首頁</a></li> <li><a href="#">成績查詢</a></li> </ul> </div> {% block main %}{% endblock %} </body> </html>
extend_block_demo.html 代碼以下:htm
{% extends 'base.html' %} {% block main %} <h1>這是首頁</h1> {% endblock %} extend_block_login_demo.html 代碼以下: {% extends 'base.html' %} {% block main %} <h1>這是登陸頁面</h1> {% endblock %}
extend_block_demo.py 代碼以下:繼承
from flask import Flask, render_template app = Flask(__name__) @app.route('/extend_block_demo/') def hello_world(): return render_template('extend_block_demo.html') @app.route('/login/') def login(): return render_template('exctend_block_login_demo.html') if __name__ == '__main__': app.run(debug=True)