W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Jinja 中到處都允許使用基本表達(dá)式。這像常規(guī)的 Python 一樣工作,即使你不用 Python 工作,你也會(huì)感受到其帶來的便利。
表達(dá)式最簡(jiǎn)單的形式就是字面量。字面量表示諸如字符串和數(shù)值的 Python 對(duì)象。下面 的字面量是可用的:
“Hello World”:
雙引號(hào)或單引號(hào)中間的一切都是字符串。無論何時(shí)你需要在模板中使用一個(gè)字 符串(比如函數(shù)調(diào)用、過濾器或只是包含或繼承一個(gè)模板的參數(shù)),它們都是 有用的。
42 / 42.23:
直接寫下數(shù)值就可以創(chuàng)建整數(shù)和浮點(diǎn)數(shù)。如果有小數(shù)點(diǎn),則為浮點(diǎn)數(shù),否則為 整數(shù)。記住在 Python 里,?42?和?42.0?是不一樣的。
[‘list’, ‘of’, ‘objects’]:
一對(duì)中括號(hào)括起來的東西是一個(gè)列表。列表用于存儲(chǔ)和迭代序列化的數(shù)據(jù)。例如 你可以容易地在 for 循環(huán)中用列表和元組創(chuàng)建一個(gè)鏈接的列表:
<ul>
{% for href, caption in [('index.html', 'Index'), ('about.html', 'About'),
('downloads.html', 'Downloads')] %}
<li><a href="{{ href }}">{{ caption }}</a></li>
{% endfor %}
</ul>
(‘tuple’, ‘of’, ‘values’):
元組與列表類似,只是你不能修改元組。如果元組中只有一個(gè)項(xiàng),你需要以逗號(hào) 結(jié)尾它。元組通常用于表示兩個(gè)或更多元素的項(xiàng)。更多細(xì)節(jié)見上面的例子。
{‘dict’: ‘of’, ‘key’: ‘a(chǎn)nd’, ‘value’: ‘pairs’}:
Python 中的字典是一種關(guān)聯(lián)鍵和值的結(jié)構(gòu)。鍵必須是唯一的,并且鍵必須只有一個(gè) 值。字典在模板中很少使用,罕用于諸如?xmlattr()?過濾器之類。
true / false:
true 永遠(yuǎn)是 true ,而 false 始終是 false 。
提示
特殊常量?true?、?false?和?none?實(shí)際上是小寫的。因?yàn)檫@在過去會(huì)導(dǎo)致 混淆,過去?True?擴(kuò)展為一個(gè)被認(rèn)為是 false 的未定義的變量。所有的這三個(gè) 常量也可以被寫成首字母大寫(True?、?False?和?None?)。盡管如此, 為了一致性(所有的 Jinja 標(biāo)識(shí)符是小寫的),你應(yīng)該使用小寫的版本。
Jinja 允許你用計(jì)算值。這在模板中很少用到,但是為了完整性允許其存在。支持下面的 運(yùn)算符:
+
把兩個(gè)對(duì)象加到一起。通常對(duì)象是素質(zhì),但是如果兩者是字符串或列表,你可以用這 種方式來銜接它們。無論如何這不是首選的連接字符串的方式!連接字符串見?~?運(yùn)算符。?{{?1?+?1?}}?等于?2?。
-
用第一個(gè)數(shù)減去第二個(gè)數(shù)。?{{?3?-?2?}}?等于?1?。
/
對(duì)兩個(gè)數(shù)做除法。返回值會(huì)是一個(gè)浮點(diǎn)數(shù)。?{{?1?/?2?}}?等于?{{?0.5?}}?。
//
對(duì)兩個(gè)數(shù)做除法,返回整數(shù)商。?{{?20?//?7?}}?等于?2?。
%
計(jì)算整數(shù)除法的余數(shù)。?{{?11?%?7?}}?等于?4?。
*
用右邊的數(shù)乘左邊的操作數(shù)。?{{?2??2?}}?會(huì)返回?4?。也可以用于重 復(fù)一個(gè)字符串多次。?{{?‘=’??80?}}?會(huì)打印 80 個(gè)等號(hào)的橫條。
**
取左操作數(shù)的右操作數(shù)次冪。?{{?2**3?}}?會(huì)返回?8?。
==
比較兩個(gè)對(duì)象是否相等。
!=
比較兩個(gè)對(duì)象是否不等。
如果左邊大于右邊,返回?true?。
=
如果左邊大于等于右邊,返回?true?。
如果左邊小于右邊,返回?true?。
如果左邊小于等于右邊,返回?true?。
對(duì)于?if?語句,在?for?過濾或?if?表達(dá)式中,它可以用于聯(lián)合多個(gè)表達(dá)式:
and
如果左操作數(shù)和右操作數(shù)同為真,返回 true 。
or
如果左操作數(shù)和右操作數(shù)有一個(gè)為真,返回 true 。
not
對(duì)一個(gè)表達(dá)式取反(見下)。
(expr)
表達(dá)式組。
提示
is?和?in?運(yùn)算符同樣支持使用中綴記法:?foo?is?not?bar?和?foo?not?in?bar?而不是?not?foois?bar?和?not?foo?in?bar?。所有的 其它表達(dá)式需要前綴記法?not?(foo?and?bar)?。
下面的運(yùn)算符非常有用,但不適用于其它的兩個(gè)分類:
in
運(yùn)行序列/映射包含檢查。如果左操作數(shù)包含于右操作數(shù),返回 true 。比如?{{?1?in[1,2,3]?}}?會(huì)返回 true 。
is
運(yùn)行一個(gè)?測(cè)試?。
|
應(yīng)用一個(gè)?過濾器?。
~
把所有的操作數(shù)轉(zhuǎn)換為字符串,并且連接它們。?{{?"Hello?"?~?name?~?"!"?}}?會(huì)返回(假設(shè)?name?值為?''John'?)?Hello?John!?。
()
調(diào)用一個(gè)可調(diào)用量:{{?post.render()?}}?。在圓括號(hào)中,你可以像在 python 中一樣使用位置參數(shù)和關(guān)鍵字參數(shù):?{{?post.render(user,?full=true)?}}?。
. / []
獲取一個(gè)對(duì)象的屬性。(見?變量?)
同樣,也可以使用內(nèi)聯(lián)的?if?表達(dá)式。這在某些情況很有用。例如你可以用來在一個(gè) 變量定義的情況下才繼承一個(gè)模板,否則繼承默認(rèn)的布局模板:
{% extends layout_template if layout_template is defined else 'master.html' %}
一般的語法是??something>?if??is?true>?else??something?else>?。
else?部分是可選的。如果沒有顯式地提供 else 塊,會(huì)求值一個(gè)未定義對(duì)象:
{{ '[%s]' % page.title if page.title }}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: