日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Flask 模板 之 变量和过滤器

發(fā)布時(shí)間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Flask 模板 之 变量和过滤器 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.模板

在前面的示例中,視圖函數(shù)的主要作用是生成請(qǐng)求的響應(yīng),這是最簡(jiǎn)單的請(qǐng)求。實(shí)際上,視圖函數(shù)有兩個(gè)作用:處理業(yè)務(wù)邏輯和返回響應(yīng)內(nèi)容。在大型應(yīng)用中,把業(yè)務(wù)邏輯和表現(xiàn)內(nèi)容放在一起,會(huì)增加代碼的復(fù)雜度和維護(hù)成本。本節(jié)學(xué)到的模板,它的作用即是承擔(dān)視圖函數(shù)的另一個(gè)作用,即返回響應(yīng)內(nèi)容。 模板其實(shí)是一個(gè)包含響應(yīng)文本的文件,其中用占位符(變量)表示動(dòng)態(tài)部分,告訴模板引擎其具體值需要從使用的數(shù)據(jù)中獲取。使用真實(shí)值替換變量,再返回最終得到的字符串,這個(gè)過程稱為“渲染”。Flask使用Jinja2這個(gè)模板引擎來渲染模板。Jinja2能識(shí)別所有類型的變量,包括{}。 Jinja2模板引擎,Flask提供的render_template函數(shù)封裝了該模板引擎,render_template函數(shù)的第一個(gè)參數(shù)是模板的文件名,后面的參數(shù)都是鍵值對(duì),表示模板中變量對(duì)應(yīng)的真實(shí)值。

Jinja2官方文檔(http://docs.jinkan.org/docs/jinja2/)

我們先來認(rèn)識(shí)下模板的基本語法:

{% if user %}{{ user }} {% else %}hello! <ul>{% for index in indexs %}<li> {{ index }} </li>{% endfor %} </ul>

通過修改一下前面的示例,來學(xué)習(xí)下模板的簡(jiǎn)單使用:

@app.route('/') def hello_itcast():return render_template('index.html')@app.route('/user/<name>') def hello_user(name):return render_template('index.html',name=name)

變量

在模板中{{ variable }}結(jié)構(gòu)表示變量,是一種特殊的占位符,告訴模板引擎這個(gè)位置的值,從渲染模板時(shí)使用的數(shù)據(jù)中獲取;Jinja2除了能識(shí)別基本類型的變量,還能識(shí)別{};

<p>{{mydict['key']}}</p><p>{{mylist[1]}}</p><p>{{mylist[myvariable]}}</p> from flask import Flask,render_template app = Flask(__name__)@app.route('/') def index():mydict = {'key':'silence is gold'}mylist = ['Speech', 'is','silver']myintvar = 0return render_template('vars.html',mydict=mydict,mylist=mylist,myintvar=myintvar) if __name__ == '__main__':app.run(debug=True)

反向路由:

Flask提供了url_for()輔助函數(shù),可以使用程序URL映射中保存的信息生成URL;url_for()接收視圖函數(shù)名作為參數(shù),返回對(duì)應(yīng)的URL;

如調(diào)用url_for('index',_external=True)返回的是絕對(duì)地址,在下面這個(gè)示例中是http://127.0.0.1:5000/index。

@app.route('/index') def index():return render_template('index.html')@app.route('/user/') def redirect():return url_for('index',_external=True)

自定義錯(cuò)誤頁面:

from flask import Flask,render_template@app.errorhandler(404) def page_not_found(e):return render_template('404.html'), 404

?

2 過濾器:

過濾器的本質(zhì)就是函數(shù)。有時(shí)候我們不僅僅只是需要輸出變量的值,我們還需要修改變量的顯示,甚至格式化、運(yùn)算等等,這就用到了過濾器。 過濾器的使用方式為:變量名 | 過濾器。 過濾器名寫在變量名后面,中間用 | 分隔。如:{{variable | capitalize}},這個(gè)過濾器的作用:把變量variable的值的首字母轉(zhuǎn)換為大寫,其他字母轉(zhuǎn)換為小寫。 其他常用過濾器如下:

字符串操作:

safe:禁用轉(zhuǎn)義;

<p>{{ '<em>hello</em>' | safe }}</p>

capitalize:把變量值的首字母轉(zhuǎn)成大寫,其余字母轉(zhuǎn)小寫;

<p>{{ 'hello' | capitalize }}</p>

lower:把值轉(zhuǎn)成小寫;

<p>{{ 'HELLO' | lower }}</p>

upper:把值轉(zhuǎn)成大寫;

<p>{{ 'hello' | upper }}</p>

title:把值中的每個(gè)單詞的首字母都轉(zhuǎn)成大寫;

<p>{{ 'hello' | title }}</p>

trim:把值的首尾空格去掉;

<p>{{ ' hello world ' | trim }}</p>

reverse:字符串反轉(zhuǎn);

<p>{{ 'olleh' | reverse }}</p>

format:格式化輸出;

<p>{{ '%s is %d' | format('name',17) }}</p>

striptags:渲染之前把值中所有的HTML標(biāo)簽都刪掉;

<p>{{ '<em>hello</em>' | striptags }}</p>

列表操作

first:取第一個(gè)元素

<p>{{ [1,2,3,4,5,6] | first }}</p>

last:取最后一個(gè)元素

<p>{{ [1,2,3,4,5,6] | last }}</p>

length:獲取列表長(zhǎng)度

<p>{{ [1,2,3,4,5,6] | length }}</p>

sum:列表求和

<p>{{ [1,2,3,4,5,6] | sum }}</p>

sort:列表排序

<p>{{ [6,2,3,1,5,4] | sort }}</p>

語句塊過濾(不常用):

{% filter upper %}this is a Flask Jinja2 introduction{% endfilter %}

自定義過濾器:

過濾器的本質(zhì)是函數(shù)。當(dāng)模板內(nèi)置的過濾器不能滿足需求,可以自定義過濾器。自定義過濾器有兩種實(shí)現(xiàn)方式:一種是通過Flask應(yīng)用對(duì)象的add_template_filter方法。還可以通過裝飾器來實(shí)現(xiàn)自定義過濾器。

自定義的過濾器名稱如果和內(nèi)置的過濾器重名,會(huì)覆蓋內(nèi)置的過濾器。

實(shí)現(xiàn)方式一:通過調(diào)用應(yīng)用程序?qū)嵗腶dd_template_filter方法實(shí)現(xiàn)自定義過濾器。該方法第一個(gè)參數(shù)是函數(shù)名,第二個(gè)參數(shù)是自定義的過濾器名稱。

def filter_double_sort(ls):return ls[::2] app.add_template_filter(filter_double_sort,'double_2')

實(shí)現(xiàn)方式二:用裝飾器來實(shí)現(xiàn)自定義過濾器。裝飾器傳入的參數(shù)是自定義的過濾器名稱。

@app.template_filter('db3') def filter_double_sort(ls):return ls[::-3]

?

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的Flask 模板 之 变量和过滤器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品国产三级国产aⅴ浪潮 | 久久麻豆视频 | 九九热九九热 | 波多野结衣av在线免费观看 | 一级大片网站 | 亚洲av永久无码国产精品久久 | 日本一区二区三区四区五区 | 亚洲男女啪啪 | 日本免费视频 | 色欲亚洲Av无码精品天堂 | 亚洲AV成人午夜无码精品久久 | 亚洲色图日韩精品 | 亚洲免费观看高清完整版在线 | 日本免费视频 | 中字幕一区二区三区乱码 | 亚洲免费不卡视频 | 国产1区在线观看 | 黄色aa大片| 高清中文字幕在线a片 | 丝袜诱惑av| 国产免费内射又粗又爽密桃视频 | 日本a大片 | 一级裸体视频 | 精品无码一区二区三区的天堂 | 亚洲国产精品网站 | 青草青草久热 | 先锋影音在线 | 精品无码久久久久久久久果冻 | 婷婷久久五月 | 亚洲精品激情视频 | 中文字幕人妻熟女在线 | 911亚洲精品| 日韩精品一区二区在线视频 | 免费人成在线观看 | 好吊色欧美一区二区三区视频 | 日韩精品一区二区不卡 | 在线观看国产黄色 | 精品一区二区三区蜜臀 | 亚洲午夜精品 | 日本一区免费视频 | 黄色成人免费网站 | 成人午夜视频在线免费观看 | 外国av网站| 亚洲精品久久 | 美女100%无挡 | 91久久精品夜夜躁日日躁欧美 | 亚洲欧美综合精品久久成人 | 国产精品久久久久久久久岛 | 久久婷婷色综合 | 爱情岛av | 国产aaa毛片 | 男插女视频在线观看 | 精品影片一区二区入口 | 一区二区视频在线观看免费 | 91精品久久久久久久久久入口 | 欧美少妇一级片 | 一级黄色美女视频 | 国产麻豆91| 激情小说激情视频 | 久久一本精品 | 国产精品超碰 | 午夜影院免费 | 床戏高潮呻吟声片段 | 黄色国产一区 | www.xxx在线观看 | 欧美日韩综合一区二区 | 91视频88av| 一级片aaaaa 国产又黄又粗又猛又爽 | 精品少妇一区二区三区免费观 | 国产精品久久久久久久久毛片 | 丰腴饱满的极品熟妇 | 97caoporn| 肉丝美足丝袜一区二区三区四 | 又色又爽又黄无遮挡的免费视频 | 99热成人| 91av视频在线免费观看 | 亚洲AV无码精品一区二区三区 | 无码精品人妻一区二区 | 国产成人av一区二区三区 | 国产又黄又爽视频 | 黄色av网址在线观看 | 福利视频在线播放 | 国产精品久久久久久久久 | 五月天激情小说 | 日韩视频在线观看视频 | 麻豆国产精品一区 | 四虎精品在线 | 四虎永久网址 | 精品视频在线播放 | 99久久婷婷 | 91精品网站| 欧美日本亚洲韩国国产 | 国产人妖在线 | 人人澡人人澡人人澡 | www.婷婷.com| 浪漫樱花在线观看高清动漫 | 国产精品久久久久久免费观看 | 亚洲成a人无码 | 在线中文字幕一区 |