flask的继承和block

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)
相关文章
相关标签/搜索