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)