欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Flask模板繼承深入理解與應用

 更新時間:2022年09月06日 14:55:24   作者:weixin_42576837  
Flask中的模板可以繼承,通過繼承可以把模板中許多重復出現(xiàn)的元素抽取出來,放在父模板中,并且父模板通過定義block給子模板開一個口,子模板根據(jù)需要,再實現(xiàn)這個block

什么叫模板繼承呢

在我的理解就是:在前端頁面中肯定有很多頁面中有很多相同的地方,比如頁面頂部的導航欄,底部的頁腳等部分,這時候如果每一個頁面都重寫一遍,會很麻煩,而且也沒必要。

這時候就可以做一個模板,叫做父模板,里面放上相同的部分,不同的部分先使用其他東西占位,然后在不同的頁面中,繼承這個父模板,不同的部分填充不同的內(nèi)容。

模板頁

首先做一個模板頁面,模板是這樣子的:

上下都是不變的東西,中間的部分是不同的,不同的頁面繼承這個模板頁,然后在中間填充不同的內(nèi)容。

導航欄的兩個超鏈接:

<li><a href="/" rel="external nofollow"  rel="external nofollow"  >首頁</a></li>
<li><a href="/about" rel="external nofollow"  rel="external nofollow"  >關(guān)于我們</a></li>

注意:這里的跳轉(zhuǎn)路徑是指定到某一個路由,不是某一個html頁面。

相同部分的代碼就是普通的html代碼,只有需要填充的區(qū)域代碼寫法不同:

首先是標題title,其他頁面需要繼承模板頁,所以模板頁的標題不能寫死,而是需要動態(tài)變化的,所以需要先用一個block占位:

寫法是這樣的,title標簽中間的內(nèi)容由一個block占著,這個block叫做title,名字可以隨意,后面會根據(jù)名字選擇block來填充。

<title>{% block title %}{% endblock %}</title>

然后是中間區(qū)域:

<div style="background-color:silver;height: 300px;width: 500px;margin: 10px">
不同的部分
<!--中間是不同的部分,用block先占著-->
{% block body %}
{% endblock %}
</div>

這里也有一個block,叫做body。注意:每一個block都需要一個{% endblock %}作為block的結(jié)束位置。

完整代碼

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <!--不同頁面的標題不一樣,所以需要占位符,里面的title是名稱,可以隨意-->
    <title>{% block title %}{% endblock %}</title>
</head>
<body>
<!--相同的部分,導航欄-->
<div style="background-color: beige;height: 200px;width: 300px">
    相同的導航欄
<ul>
    <li><a href="/" rel="external nofollow"  rel="external nofollow"  >首頁</a></li>
    <li><a href="/about" rel="external nofollow"  rel="external nofollow"  >關(guān)于我們</a></li>
</ul>
</div>
<div style="background-color:silver;height: 300px;width: 500px;margin: 10px">
<p>不同的部分</p>
<!--中間是不同的部分,用block先占著-->
{% block body %}
{% endblock %}
</div>
<!--相同的部分,頁腳-->
<div style="background-color: burlywood;height: 100px;width: 200px">
    <footer style="background-color: darkgray">相同的頁腳部分</footer>
</div>
</body>
</html>

繼承模板的頁面:index.html

現(xiàn)在新建一個頁面:index.html,它繼承之前的模板頁面:

由于是繼承了父模板,所以首先要指定這個模板繼承哪一個模板。{% extends '模板.html' %},表示繼承叫做模板.html的頁面。然后分別指定不同的block中填充不同的內(nèi)容。

<!--繼承哪一個模板-->
{% extends '模板.html' %}
<!--指定不同的內(nèi)容,指定叫做title的block中的內(nèi)容-->
{% block title %}
    繼承了模板頁的 首頁
{% endblock %}
<!--指定叫做body的block中的內(nèi)容-->
{% block body %}
    <p>首頁中的內(nèi)容</p>
{% endblock %}

這個頁面對應的路由是/,對應的視圖函數(shù)是:

#根路徑,渲染index.html頁面
@app.route('/')
def index():
    return render_template('index.html')

繼承模板的頁面:about.html

首先about頁面對應的路由時/about,對應的視圖函數(shù):

#/about路徑,渲染about.html頁面
teams = ['小明','小紅','小剛']
@app.route('/about')
def about():
#以關(guān)鍵字參數(shù)的形式把teams傳遞到about.html頁面中
    return render_template('about.html',teams = teams)

這里我們傳遞一個列表過去,在about.html頁面中加載出來。

about.html

{% extends '模板.html' %}
{% block title %}
繼承模板頁的 about頁面
{% endblock %}
{% block body %}
<p>about頁面中的內(nèi)容</p>
    <p>
        我們的團隊成員有:
        {% for name in teams %}	#拿到傳遞的參數(shù)列表,遍歷
            <li>{{ name }}</li>
        {% endfor %}
    </p>
{% endblock %}

對應的py文件:模板繼承練習.py

from flask import  Flask,render_template
app = Flask(__name__,template_folder='../templates')
#根路徑,渲染index.html頁面
@app.route('/')
def index():
    return render_template('index.html')
#/about路徑,渲染about.html頁面
teams = ['小明','小紅','小剛']
@app.route('/about')
def about():
    return render_template('about.html',teams = teams)
if __name__ == '__main__':
    app.run()

執(zhí)行效果如下:

到此這篇關(guān)于Flask模板繼承深入理解與應用的文章就介紹到這了,更多相關(guān)Flask模板繼承內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實現(xiàn)敲擊木魚積累功德小項目

    Python實現(xiàn)敲擊木魚積累功德小項目

    最近大家都很流行用手機敲擊電子木魚積累功德,這在很多短視頻中也常常見到。本文將用Python實現(xiàn)這一效果,感興趣的小伙伴可以了解一下
    2022-11-11
  • OpenCV-Python 實現(xiàn)兩張圖片自動拼接成全景圖

    OpenCV-Python 實現(xiàn)兩張圖片自動拼接成全景圖

    圖片的全景拼接如今已不再稀奇,現(xiàn)在的智能攝像機和手機攝像頭基本都帶有圖片自動全景拼接的功能,本文使用OpenCV-Python 實現(xiàn)兩張圖片自動拼接成全景圖,感興趣的可以了解一下
    2021-06-06
  • Python中tuple類型的使用

    Python中tuple類型的使用

    在Python中,元組(tuple)是一種不可變的序列類型,可以包含多個值,這些值可以是不同類型的,本文主要介紹了Python中tuple類型的使用,感興趣的可以了解一下
    2023-12-12
  • Python探索之SocketServer詳解

    Python探索之SocketServer詳解

    這篇文章主要介紹了Python探索之SocketServer詳解,小編覺得還是比較不錯的,這里分享給大家,供需要的朋友參考。
    2017-10-10
  • python輸出結(jié)果刷新及進度條的實現(xiàn)操作

    python輸出結(jié)果刷新及進度條的實現(xiàn)操作

    這篇文章主要介紹了python輸出結(jié)果刷新及進度條的實現(xiàn)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Pytorch中expand()的使用(擴展某個維度)

    Pytorch中expand()的使用(擴展某個維度)

    這篇文章主要介紹了Pytorch中expand()的使用(擴展某個維度),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 詳解python異步編程之a(chǎn)syncio(百萬并發(fā))

    詳解python異步編程之a(chǎn)syncio(百萬并發(fā))

    這篇文章主要介紹了詳解python異步編程之a(chǎn)syncio(百萬并發(fā)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • 利用matplotlib+numpy繪制多種繪圖的方法實例

    利用matplotlib+numpy繪制多種繪圖的方法實例

    matplotlib是Python最著名的繪圖庫,本文給大家分享了利用matplotlib+numpy繪制多種繪圖的方法實例,其中包括填充圖、散點圖(scatter plots)、. 條形圖(bar plots)、等高線圖(contour plots)、 點陣圖和3D圖,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-05-05
  • numpy給array增加維度np.newaxis的實例

    numpy給array增加維度np.newaxis的實例

    今天小編就為大家分享一篇numpy給array增加維度np.newaxis的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • Python實現(xiàn)新浪博客備份的方法

    Python實現(xiàn)新浪博客備份的方法

    這篇文章主要介紹了Python實現(xiàn)新浪博客備份的方法,涉及Python正則操作,字符串操作及文本操作的相關(guān)技巧,需要的朋友可以參考下
    2016-04-04

最新評論