jinja2

https://www.cnblogs.com/poloyy/tag/
https://www.cnblogs.com/poloyy/p/14999797.html
https://jingtian.blog.csdn.net/article/details/136361001?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-3-136361001-blog-120347114.235%5Ev43%5Epc_blog_bottom_relevance_base3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-3-136361001-blog-120347114.235%5Ev43%5Epc_blog_bottom_relevance_base3&utm_relevant_index=4

1.靜態(tài)文件引入:{{ url_for('static', filename='文件路徑') }}

2.定義路由:{{ url_for('函數(shù)名'澎羞,變量=參數(shù)) }}

3.定義數(shù)據(jù)塊:{% block 數(shù)據(jù)塊名稱 %}…{% endblock %}

4.繼承模板:{% extends "home/home.html" %}

5.包含模板: {% include "home/menu.html" %}

轉(zhuǎn)載于:[https://www.cnblogs.com/Paul-watermelon/articles/10102198.html](https://www.cnblogs.com/Paul-watermelon/articles/10102198.html)

jinja2 模板文件混合 html 語(yǔ)法與 jinja2 語(yǔ)法,使用分界符區(qū)分 html 語(yǔ)法與 jinja2 語(yǔ)法搪柑。有 5 種常見的分界符:

{{ 變量 }}岛马,將變量放置在 {{ 和 }} 之間;
{% 語(yǔ)句 %}届案,將語(yǔ)句放置在 {% 和 %} 之間庵楷;
{# 注釋 #},將注釋放置在 {# 和 #} 之間楣颠;
## 注釋尽纽,將注釋放置在 # 之后
 

變量
語(yǔ)法
jinja2 模板中,使用  {{ var }}  包圍的標(biāo)識(shí)符稱為變量童漩,模板渲染會(huì)將其替換為 Python 中的變量弄贿,語(yǔ)法如下:

 {{ 變量 }}
 

jinja2 模板
<html>
{{ string }}

<ul>
    <li> {{ list[0] }}
    <li> {{ list[1] }}
    <li> {{ list[2] }}
    <li> {{ list[3] }}
</ul>

<ul>
    <li> {{ dict['name'] }}
    <li> {{ dict['age'] }}
</ul>
</html>

### tests

#### 語(yǔ)法

jinja2 提供的 tests 可以用來(lái)在語(yǔ)句里對(duì)變量或表達(dá)式進(jìn)行測(cè)試,語(yǔ)法如下:

 <code-box id="code-ApYwTY" style="padding: 0px; margin: 5px; letter-spacing: 0.75px; position: relative; display: block; border-radius: 4px; box-shadow: rgba(37, 44, 97, 0.15) 0px 4px 11px -2px, rgba(93, 100, 148, 0.06) 0px 1px 3px 0px;"><pre boxid="code-ApYwTY" class="hljs ceylon code-pre-line" style="padding: 0.5em; margin: 0px; letter-spacing: 0.75px; transition-duration: 0.2s; transition-property: background, font-size, border-color, border-radius, border-width, padding, margin, color; overflow: auto; font-size: 12px; font-weight: 400; font-family: &quot;Source Code Pro&quot;, Consolas, Menlo, Monaco, &quot;Courier New&quot;, monospace !important; white-space: pre; border-radius: 4px; word-break: break-all; overflow-wrap: break-word; counter-reset: itemcounter 0; background: rgb(40, 44, 52); color: rgb(171, 178, 191); display: block; border: 1px solid rgb(204, 204, 204); position: relative; max-height: 120vh;">{% variable is test %}</pre></code-box> 


完整的 test 請(qǐng)參考 [https://jinja.palletsprojects.com/en/latest/templates/#builtin-tests](https://jinja.palletsprojects.com/en/latest/templates/#builtin-tests)矫膨,部分的 test 如下:

| test 名稱 | 功能 |
| --- | --- |
| defined | 變量是否已經(jīng)定義 |
| boolean | 變量的類型是否是 boolean |
| integer | 變量的類型是否是 integer |
| float | 變量的類型是否是 float |
| string | 變量是否是 string |
| mapping | 變量的類型是否是字典 |
| sequence | 變量的類型是否是序列 |
| even | 變量是否是偶數(shù) |
| odd | 變量是否是奇數(shù) |
| lower | 變量是否是小寫 |
| upper | 

變量是否是大寫

 |
過(guò)濾器
語(yǔ)法
jinja2 過(guò)濾器的是一個(gè)函數(shù)差凹,語(yǔ)法如下:

{{ variable | filter }}
執(zhí)行函數(shù)調(diào)用 filter(varialbe),把函數(shù)返回值作為這個(gè)代碼塊的值
暫時(shí)不舉具體的栗子了侧馅,只做簡(jiǎn)單介紹直奋,目測(cè)后面我會(huì)出詳細(xì)文章講解 jinja2



#fastapi +jinja2模板主要用在前后端不分離項(xiàng)目中

在jinja2中,存在三種語(yǔ)法:

1施禾、控制結(jié)構(gòu) {% %}
2脚线、變量取值 {{ }}
3、注釋 {# #}


列表類型數(shù)據(jù)渲染
return templates.TemplateResponse(
‘index.html’, #第一個(gè)參數(shù)放模板文件
{
‘request’: request, # 注意弥搞,返回模板響應(yīng)時(shí)邮绿,必須有request鍵值對(duì)渠旁,且值為Request請(qǐng)求對(duì)象
‘user’:name,
‘a(chǎn)ge’:age,
‘people’:people,
“books”: [“西游記”,  “紅樓夢(mèng)”],
“booksDict”: {
“西游記”: {“price”: 100, “publish”: “蘋果社”},
“紅樓夢(mèng)”: {“price”: 200, “publish”: “橘子社”},
}
}, #context上下文對(duì)象,是個(gè)字典

)

在html頁(yè)面展示

<p>{{ books.0 }}</p>
<p>{{ books.1 }}</p>
<p>{{ books.2 }}</p>
<p>{{ books.3 }}</p>

<ul>
    {% for book in books %}
    <li>{{ book }}</li>  <!--凡是變量都要用兩個(gè)大括號(hào)括起來(lái)-->
{% endfor %}
</ul>


字典類型數(shù)據(jù)渲染


在html頁(yè)面通過(guò)點(diǎn)的方式獲取
<p>{{ booksDict.西游記.publish }}</p>


jinja2 的過(guò)濾器

只需要在html文件中的變量后?使?管道(|)分割船逮,多個(gè)過(guò)濾器可以鏈?zhǔn)秸{(diào)?顾腊,前?個(gè)過(guò)濾器的輸出會(huì)作為后?個(gè)過(guò)濾器的輸?。
{{user | capitalize }} 首字母大寫

{{ ‘a(chǎn)bc’| upper }} # ABC

{{ ‘hello world’| title }} # Hello World

{{ “hello world”| replace(‘world’,‘yuan’) | upper }} # HELLO YUAN

{{ 18.18 | round | int }} # 18


jinja2 的控制結(jié)構(gòu)
if分支
{% if age > 18 %}
    <p>成年區(qū)</p>
{% else %}
    <p>未成年區(qū)</p>
{% endif %}

循環(huán)控制
jinja2中的for循環(huán)?于迭代Python的數(shù)據(jù)類型挖胃,包括列表杂靶,元組和字典。在jinja2中不存在while循環(huán)酱鸭。

{% for book in books %}
    <p>{{ book }}</p>
{% endfor %}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末吗垮,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子凹髓,更是在濱河造成了極大的恐慌烁登,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蔚舀,死亡現(xiàn)場(chǎng)離奇詭異饵沧,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)赌躺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門狼牺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人礼患,你說(shuō)我怎么就攤上這事是钥。” “怎么了讶泰?”我有些...
    開封第一講書人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)拂到。 經(jīng)常有香客問我痪署,道長(zhǎng),這世上最難降的妖魔是什么兄旬? 我笑而不...
    開封第一講書人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任狼犯,我火速辦了婚禮,結(jié)果婚禮上领铐,老公的妹妹穿的比我還像新娘悯森。我一直安慰自己,他們只是感情好绪撵,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開白布瓢姻。 她就那樣靜靜地躺著,像睡著了一般音诈。 火紅的嫁衣襯著肌膚如雪幻碱。 梳的紋絲不亂的頭發(fā)上绎狭,一...
    開封第一講書人閱讀 51,198評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音褥傍,去河邊找鬼儡嘶。 笑死,一個(gè)胖子當(dāng)著我的面吹牛恍风,可吹牛的內(nèi)容都是我干的蹦狂。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼朋贬,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼凯楔!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起兄世,我...
    開封第一講書人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤啼辣,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后御滩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鸥拧,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年削解,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了富弦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡氛驮,死狀恐怖腕柜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情矫废,我是刑警寧澤盏缤,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站蓖扑,受9級(jí)特大地震影響唉铜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜律杠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一潭流、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧柜去,春花似錦灰嫉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春椿肩,著一層夾襖步出監(jiān)牢的瞬間瞻颂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工郑象, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留贡这,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓厂榛,卻偏偏與公主長(zhǎng)得像盖矫,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子击奶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容