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

Jinja2過濾器的使用、控制語句示例詳解

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

1.過濾器的使用

1.過濾器和測試器

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

2.過濾器

templates/filter.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>過濾器使用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.自定義過濾器

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

app.py

# render_template 渲染模板
from flask import Flask, render_template
from datetime import datetime
 
app = Flask(__name__)
 
# strftime:根據(jù)區(qū)域設置格式化本地時間
# 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:過濾器
@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()

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

templates/filter.html

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

效果 

 2.控制語句

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歲,可以進入網(wǎng)吧!</div>
{% elif age==18 %}
    <div>您剛滿18歲,需要父母陪同才能進入!</div>
{% else %}
    <div>您未滿18歲,不能進入網(wǎng)吧!</div>
{% endif %}
</body>
</html>

注:

  • 可以注意到if語句結束后,需要加一個endif來關閉if代碼塊。這個跟python是有點不同的。
  • Jinja2中的代碼縮進只是為了更加方便閱讀。任何縮進都不是必須的。

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": "三國演義",
        "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>圖書名稱:{{ book.name }},圖書作者:{{ book.author }}</div>
{% endfor %}
 
</body>
</html>

相關文章

  • Python利用Flask-Mail實現(xiàn)發(fā)送郵件詳解

    Python利用Flask-Mail實現(xiàn)發(fā)送郵件詳解

    Flask?的擴展包?Flask?-?Mail?通過包裝了?Python?內(nèi)置的smtplib包,可以用在?Flask?程序中發(fā)送郵件。本文將利用這特性實現(xiàn)郵件發(fā)送功能,感興趣的可以了解一下
    2022-08-08
  • 關于Numpy中的行向量和列向量詳解

    關于Numpy中的行向量和列向量詳解

    今天小編就為大家分享一篇關于Numpy中的行向量和列向量詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • 對python 中class與變量的使用方法詳解

    對python 中class與變量的使用方法詳解

    今天小編就為大家分享一篇對python 中class與變量的使用方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • 用Python爬取指定關鍵詞的微博

    用Python爬取指定關鍵詞的微博

    這篇文章主要介紹了用Python爬取指定關鍵詞的微博,下面文章圍繞Python爬取指定關鍵詞的微博的相關資料展開詳細內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • Python常用工具之音頻調(diào)整音量

    Python常用工具之音頻調(diào)整音量

    這篇文章主要介紹一個可以將音頻提升音量的python常用工具,代碼具有一定的學習價值,感興趣的小伙伴可以了解一下
    2021-11-11
  • Python + opencv對拍照得到的圖片進行背景去除的實現(xiàn)方法

    Python + opencv對拍照得到的圖片進行背景去除的實現(xiàn)方法

    這篇文章主要介紹了Python + opencv對拍照得到的圖片進行背景去除的實現(xiàn)方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • django 實現(xiàn)celery動態(tài)設置周期任務執(zhí)行時間

    django 實現(xiàn)celery動態(tài)設置周期任務執(zhí)行時間

    今天小編就為大家分享一篇django 實現(xiàn)celery動態(tài)設置周期任務執(zhí)行時間,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • 詳解Python中4種超參自動優(yōu)化算法的實現(xiàn)

    詳解Python中4種超參自動優(yōu)化算法的實現(xiàn)

    要想模型效果好,每個算法工程師都應該了解的流行超參數(shù)調(diào)優(yōu)技術。今天給大家總結超參自動優(yōu)化方法:網(wǎng)格搜索、隨機搜索、貝葉斯優(yōu)化?和?Hyperband,感興趣的可以了解一下
    2022-05-05
  • python 尋找list中最大元素對應的索引方法

    python 尋找list中最大元素對應的索引方法

    今天小編就為大家分享一篇python 尋找list中最大元素對應的索引方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • YOLOV5代碼詳解之損失函數(shù)的計算

    YOLOV5代碼詳解之損失函數(shù)的計算

    YOLOV4出現(xiàn)之后不久,YOLOv5橫空出世,YOLOv5在YOLOv4算法的基礎上做了進一步的改進,檢測性能得到進一步的提升,這篇文章主要給大家介紹了關于YOLOV5代碼詳解之損失函數(shù)計算的相關資料,需要的朋友可以參考下
    2022-03-03

最新評論