99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

表達式

2018-02-24 15:39 更新

Jinja 中到處都允許使用基本表達式。這像常規(guī)的 Python 一樣工作,即使你不用 Python 工作,你也會感受到其帶來的便利。

字面量

表達式最簡單的形式就是字面量。字面量表示諸如字符串和數值的 Python 對象。下面 的字面量是可用的:

“Hello World”:

雙引號或單引號中間的一切都是字符串。無論何時你需要在模板中使用一個字 符串(比如函數調用、過濾器或只是包含或繼承一個模板的參數),它們都是 有用的。

42 / 42.23:

直接寫下數值就可以創(chuàng)建整數和浮點數。如果有小數點,則為浮點數,否則為 整數。記住在 Python 里,?42?和?42.0?是不一樣的。

[‘list’, ‘of’, ‘objects’]:

一對中括號括起來的東西是一個列表。列表用于存儲和迭代序列化的數據。例如 你可以容易地在 for 循環(huán)中用列表和元組創(chuàng)建一個鏈接的列表:

<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’):

元組與列表類似,只是你不能修改元組。如果元組中只有一個項,你需要以逗號 結尾它。元組通常用于表示兩個或更多元素的項。更多細節(jié)見上面的例子。

{‘dict’: ‘of’, ‘key’: ‘and’, ‘value’: ‘pairs’}:

Python 中的字典是一種關聯(lián)鍵和值的結構。鍵必須是唯一的,并且鍵必須只有一個 值。字典在模板中很少使用,罕用于諸如?xmlattr()?過濾器之類。

true / false:

true 永遠是 true ,而 false 始終是 false 。

提示

特殊常量?true?、?false?和?none?實際上是小寫的。因為這在過去會導致 混淆,過去?True?擴展為一個被認為是 false 的未定義的變量。所有的這三個 常量也可以被寫成首字母大寫(True?、?False?和?None?)。盡管如此, 為了一致性(所有的 Jinja 標識符是小寫的),你應該使用小寫的版本。

算術

Jinja 允許你用計算值。這在模板中很少用到,但是為了完整性允許其存在。支持下面的 運算符:

+

把兩個對象加到一起。通常對象是素質,但是如果兩者是字符串或列表,你可以用這 種方式來銜接它們。無論如何這不是首選的連接字符串的方式!連接字符串見?~?運算符。?{{?1?+?1?}}?等于?2?。

-

用第一個數減去第二個數。?{{?3?-?2?}}?等于?1?。

/

對兩個數做除法。返回值會是一個浮點數。?{{?1?/?2?}}?等于?{{?0.5?}}?。

//

對兩個數做除法,返回整數商。?{{?20?//?7?}}?等于?2?。

%

計算整數除法的余數。?{{?11?%?7?}}?等于?4?。

*

用右邊的數乘左邊的操作數。?{{?2??2?}}?會返回?4?。也可以用于重 復一個字符串多次。?{{?‘=’??80?}}?會打印 80 個等號的橫條。

**

取左操作數的右操作數次冪。?{{?2**3?}}?會返回?8?。

比較

==

比較兩個對象是否相等。

!=

比較兩個對象是否不等。

如果左邊大于右邊,返回?true?。

=

如果左邊大于等于右邊,返回?true?。

如果左邊小于右邊,返回?true?。

如果左邊小于等于右邊,返回?true?。

邏輯

對于?if?語句,在?for?過濾或?if?表達式中,它可以用于聯(lián)合多個表達式:

and

如果左操作數和右操作數同為真,返回 true 。

or

如果左操作數和右操作數有一個為真,返回 true 。

not

對一個表達式取反(見下)。

(expr)

表達式組。

提示

is?和?in?運算符同樣支持使用中綴記法:?foo?is?not?bar?和?foo?not?in?bar?而不是?not?foois?bar?和?not?foo?in?bar?。所有的 其它表達式需要前綴記法?not?(foo?and?bar)?。

其它運算符

下面的運算符非常有用,但不適用于其它的兩個分類:

in

運行序列/映射包含檢查。如果左操作數包含于右操作數,返回 true 。比如?{{?1?in[1,2,3]?}}?會返回 true 。

is

運行一個?測試?。

|

應用一個?過濾器?。

~

把所有的操作數轉換為字符串,并且連接它們。?{{?"Hello?"?~?name?~?"!"?}}?會返回(假設?name?值為?''John'?)?Hello?John!?。

()

調用一個可調用量:{{?post.render()?}}?。在圓括號中,你可以像在 python 中一樣使用位置參數和關鍵字參數:?{{?post.render(user,?full=true)?}}?。

. / []

獲取一個對象的屬性。(見?變量?)

If 表達式

同樣,也可以使用內聯(lián)的?if?表達式。這在某些情況很有用。例如你可以用來在一個 變量定義的情況下才繼承一個模板,否則繼承默認的布局模板:

{% extends layout_template if layout_template is defined else 'master.html' %}

一般的語法是??something>?if??is?true>?else??something?else>?。

else?部分是可選的。如果沒有顯式地提供 else 塊,會求值一個未定義對象:

{{ '[%s]' % page.title if page.title }}
以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號