最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Jinja2過(guò)濾器的使用、控制語(yǔ)句示例詳解

 更新時(shí)間:2023年03月02日 16:02:27   作者:頭禿小程  
在Python中,如果需要對(duì)某個(gè)變量進(jìn)行處理,我們可以通過(guò)函數(shù)來(lái)實(shí)現(xiàn),這篇文章主要介紹了Jinja2過(guò)濾器的使用、控制語(yǔ)句,需要的朋友可以參考下

1.過(guò)濾器的使用

1.過(guò)濾器和測(cè)試器

在Python中,如果需要對(duì)某個(gè)變量進(jìn)行處理,我們可以通過(guò)函數(shù)來(lái)實(shí)現(xiàn)。在模板中,我們則是通過(guò)過(guò)濾器來(lái)實(shí)現(xiàn)的。過(guò)濾器本質(zhì)上也是函數(shù),但是在模板中使用的方式是通過(guò)管道符號(hào)(|)來(lái)調(diào)用的。例如有個(gè)字符串類型變量name,想要獲取他的長(zhǎng)度,則可以通過(guò) {name[length}}來(lái)獲取,Jinja2會(huì)把name當(dāng)做第一個(gè)參數(shù)傳給length過(guò)濾器底層對(duì)應(yīng)的函數(shù)。length是Jinja2內(nèi)置好的過(guò)濾器,Jinja2中內(nèi)置了許多好用過(guò)濾器,如果內(nèi)置過(guò)濾器不滿足需求,我們還可以自定義過(guò)濾器。我們先來(lái)學(xué)習(xí)下如何自定義過(guò)濾器,讀者明白了過(guò)濾器的原理后,再去學(xué)習(xí)Jinja2內(nèi)置過(guò)濾器就更能得心應(yīng)手了。

2.過(guò)濾器

templates/filter.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>過(guò)濾器使用demo</title>
</head>
<body>
{{ user.username}}-{{ user.username|length }}
</body>
</html>

app.py

# render_template 渲染模板
from flask import Flask, render_template
 
app = Flask(__name__)
 
class User:
    def __init__(self, username, email):
        self.username = username
        self.email = email
 
@app.route("/filter")
def filter_demo():
    user = User(username="小程xxx", email="xxx@qq.com")
    return render_template("filter.html",user=user)
 
if __name__ == '__main__':
    app.run()

效果

3.自定義過(guò)濾器

       過(guò)濾器本質(zhì)上是 Python的函數(shù),他會(huì)把被過(guò)濾的值當(dāng)做第一個(gè)參數(shù)傳給這個(gè)函數(shù),函數(shù)經(jīng)過(guò)一些邏輯處理后,再返回新的值。在過(guò)濾器函數(shù)寫(xiě)好后,可以通過(guò)@app.template_ filter裝飾器或者是app.add_template_filter函數(shù)來(lái)把函數(shù)注冊(cè)成Jinja2能用的過(guò)濾器。這里我們以注冊(cè)一個(gè)時(shí)間格式化的過(guò)濾器為例,來(lái)說(shuō)明下自定義過(guò)濾器的方法。

app.py

# render_template 渲染模板
from flask import Flask, render_template
from datetime import datetime
 
app = Flask(__name__)
 
# strftime:根據(jù)區(qū)域設(shè)置格式化本地時(shí)間
# format:格式化
def datetime_format(value,format="%Y年%m月%d日 %H:%m"):
    return value.strftime(format)
 
app.add_template_filter(datetime_format,"dformat")
 
class User:
    def __init__(self, username, email):
        self.username = username
        self.email = email
 
 
# filter:過(guò)濾器
@app.route("/filter")
def filter_demo():
    user = User(username="小程xxx", email="xxx@qq.com")
    mytime=datetime.now()
    return render_template("filter.html",user=user,mytime=mytime)
 
if __name__ == '__main__':
    app.run()

       上面我們定義了一個(gè)datetime_formt的函數(shù),第一個(gè)參數(shù)是需要被處理的值,第二個(gè)參數(shù)是時(shí)間的格式,并且指定了一個(gè)默認(rèn)值。然后下面通過(guò)app.add_template_filter,將datetime_format函數(shù)注冊(cè)成了過(guò)濾器,并且這個(gè)過(guò)濾器的名字,叫做dformat。那么以后在模板文件中,就可以這樣類似這樣使用了:

templates/filter.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>過(guò)濾器使用demo</title>
</head>
<body>
<div>{{ user.username}}-{{ user.username|length }}</div>
<div>{{ mytime|dformat }}</div>
</body>
</html>

效果 

 2.控制語(yǔ)句

1.if

app.py 

# render_template 渲染模板
from flask import Flask, render_template
 
app = Flask(__name__)
 
@app.route("/control")
def control_statement():
    age=17
    return render_template("control.html",age=age)
 
if __name__ == '__main__':
    app.run()

templates/control.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{% if age>18 %}
    <div>您已經(jīng)滿118歲,可以進(jìn)入網(wǎng)吧!</div>
{% elif age==18 %}
    <div>您剛滿18歲,需要父母陪同才能進(jìn)入!</div>
{% else %}
    <div>您未滿18歲,不能進(jìn)入網(wǎng)吧!</div>
{% endif %}
</body>
</html>

注:

  • 可以注意到if語(yǔ)句結(jié)束后,需要加一個(gè)endif來(lái)關(guān)閉if代碼塊。這個(gè)跟python是有點(diǎn)不同的。
  • Jinja2中的代碼縮進(jìn)只是為了更加方便閱讀。任何縮進(jìn)都不是必須的。

2.for 

app.py

# render_template 渲染模板
from flask import Flask, render_template
 
app = Flask(__name__)
 
@app.route("/control")
def control_statement():
    age = 17
    books = [{
        "name": "三國(guó)演義",
        "author": "羅貫中"
    },{
        "name": "水滸傳",
        "author": "施耐庵"
    }
    ]
    return render_template("control.html", age=age,books=books)
if __name__ == '__main__':
    app.run()

templates/control.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
 
{% for book in books %}
    <div>圖書(shū)名稱:{{ book.name }},圖書(shū)作者:{{ book.author }}</div>
{% endfor %}
 
</body>
</html>

相關(guān)文章

  • 淺談Keras中shuffle和validation_split的順序

    淺談Keras中shuffle和validation_split的順序

    這篇文章主要介紹了淺談Keras中shuffle和validation_split的順序,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • python實(shí)現(xiàn)selenium截圖的兩種方法

    python實(shí)現(xiàn)selenium截圖的兩種方法

    本文主要介紹了python實(shí)現(xiàn)selenium截圖的兩種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • python3設(shè)計(jì)模式之簡(jiǎn)單工廠模式

    python3設(shè)計(jì)模式之簡(jiǎn)單工廠模式

    這篇文章主要為大家詳細(xì)介紹了python3設(shè)計(jì)模式之簡(jiǎn)單工廠模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Python中的pickle模塊解析

    Python中的pickle模塊解析

    這篇文章主要介紹了Python中的pickle模塊解析,pickle 模塊和 json 模塊很像,都有序列化的功能,不過(guò) pickle 模塊更加局限一些只能對(duì) python 使用,它可以對(duì)一個(gè) python 對(duì)象結(jié)構(gòu)的二進(jìn)制序列化和反序列化,需要的朋友可以參考下
    2023-09-09
  • 解決Python中定時(shí)任務(wù)線程無(wú)法自動(dòng)退出的問(wèn)題

    解決Python中定時(shí)任務(wù)線程無(wú)法自動(dòng)退出的問(wèn)題

    今天小編就為大家分享一篇解決Python中定時(shí)任務(wù)線程無(wú)法自動(dòng)退出的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • Python使用asyncio異步時(shí)的常見(jiàn)問(wèn)題總結(jié)

    Python使用asyncio異步時(shí)的常見(jiàn)問(wèn)題總結(jié)

    這篇文章主要為大家整理了開(kāi)發(fā)人員在?Python?中使用?asyncio?時(shí)提出的常見(jiàn)問(wèn)題以及解決方法,文中的示例代碼講解詳細(xì),感興趣的可以學(xué)習(xí)一下
    2023-04-04
  • pycharm連接spark教程

    pycharm連接spark教程

    這篇文章詳細(xì)介紹了如何在PyCharm中配置Hadoop和Spark環(huán)境,并提供了一個(gè)Python代碼示例來(lái)測(cè)試連接
    2025-01-01
  • 解決Python安裝cryptography報(bào)錯(cuò)問(wèn)題

    解決Python安裝cryptography報(bào)錯(cuò)問(wèn)題

    這篇文章主要介紹了解決Python安裝cryptography報(bào)錯(cuò)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • python可迭代對(duì)象去重實(shí)例

    python可迭代對(duì)象去重實(shí)例

    這篇文章主要介紹了python可迭代對(duì)象去重實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • python將字母轉(zhuǎn)化為數(shù)字實(shí)例方法

    python將字母轉(zhuǎn)化為數(shù)字實(shí)例方法

    在本篇文章里小編給大家整理的是關(guān)于python如何將字母轉(zhuǎn)化為數(shù)字的相關(guān)實(shí)例內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2019-10-10

最新評(píng)論

龙游县| 阿勒泰市| 宽甸| 辽宁省| 沁源县| 霍林郭勒市| 土默特右旗| 登封市| 尉犁县| 兰考县| 元氏县| 广东省| 牟定县| 营山县| 石屏县| 荃湾区| 饶阳县| 项城市| 克什克腾旗| 高邮市| 福建省| 沁源县| 东平县| 天津市| 新建县| 安阳市| 定日县| 文水县| 金华市| 饶河县| 九台市| 遂昌县| 香河县| 锡林浩特市| 平谷区| 临江市| 乳源| 林口县| 吉木萨尔县| 四子王旗| 克拉玛依市|