中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Jinja2過濾器和控制語句怎么使用

發布時間:2023-03-02 17:34:26 來源:億速云 閱讀:109 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“Jinja2過濾器和控制語句怎么使用”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Jinja2過濾器和控制語句怎么使用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

1.過濾器的使用

1.過濾器和測試器

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

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()
效果

Jinja2過濾器和控制語句怎么使用

3.自定義過濾器

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

app.py

# render_template 渲染模板
from flask import Flask, render_template
from datetime import datetime
 
app = Flask(__name__)
 
# strftime:根據區域設置格式化本地時間
# 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的函數,第一個參數是需要被處理的值,第二個參數是時間的格式,并且指定了一個默認值。然后下面通過app.add_template_filter,將datetime_format函數注冊成了過濾器,并且這個過濾器的名字,叫做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>
效果 

Jinja2過濾器和控制語句怎么使用

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

注:

  • 可以注意到if語句結束后,需要加一個endif來關閉if代碼塊。這個跟python是有點不同的。

  • Jinja2中的代碼縮進只是為了更加方便閱讀。任何縮進都不是必須的。

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>

Jinja2過濾器和控制語句怎么使用

讀到這里,這篇“Jinja2過濾器和控制語句怎么使用”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

洪泽县| 惠州市| 沾益县| 东阳市| 星座| 桐梓县| 宁都县| 阿荣旗| 隆昌县| 南皮县| 团风县| 资讯| 县级市| 方山县| 上杭县| 镇远县| 白河县| 枣强县| 锡林浩特市| 沛县| 苍山县| 宁安市| 神池县| 调兵山市| 湘阴县| 武宁县| 东宁县| 孟村| 民勤县| 万州区| 晋江市| 葵青区| 自治县| 蒙山县| 梅河口市| 视频| 青田县| 桂东县| 玉屏| 奉化市| 醴陵市|