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)
相關文章
相關標籤/搜索