W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵(lì)
下面的幾節(jié)涵蓋了可能被應(yīng)用啟用的 Jinja2 內(nèi)置的擴(kuò)展。應(yīng)用也可以提供進(jìn)一步 的擴(kuò)展,但這不會在此描述。會有獨(dú)立的文檔來解釋那種情況下的擴(kuò)展。
如果啟用來 i18n 擴(kuò)展,可以把模板中的部分標(biāo)記為可譯的。標(biāo)記一個(gè)段為可譯的,可 以使用?trans:
<p>{% trans %}Hello {{ user }}!{% endtrans %}</p>
要翻譯一個(gè)模板表達(dá)式——比如使用模板過濾器或訪問對象的屬性——你需要綁定表達(dá)式到 一個(gè)名稱來在翻譯塊中使用:
<p>{% trans user=user.username %}Hello {{ user }}!{% endtrans %}</p>
如果你需要在?trans?標(biāo)簽中綁定一個(gè)以上的表達(dá)式,用逗號來分割(?,?):
{% trans book_title=book.title, author=author.name %}
This is {{ book_title }} by {{ author }}
{% endtrans %}
在翻譯塊中不允許使用語句,只能使用變量標(biāo)簽。
為表示復(fù)數(shù),在?trans?和?endtrans?之間用?pluralize?標(biāo)簽同時(shí)指定單數(shù)和復(fù) 數(shù)形式:
{% trans count=list|length %}
There is {{ count }} {{ name }} object.
{% pluralize %}
There are {{ count }} {{ name }} objects.
{% endtrans %}
默認(rèn)情況下塊中的第一個(gè)變量用于決定使用單數(shù)還是復(fù)數(shù)。如果這不奏效,你可以指定 用于復(fù)數(shù)的名稱作為?pluralize?的參數(shù):
{% trans ..., user_count=users|length %}...
{% pluralize user_count %}...{% endtrans %}
也可以翻譯表達(dá)式中的字符串。為此,有三個(gè)函數(shù):
?gettext: 翻譯一個(gè)單數(shù)字符串 -?ngettext: 翻譯一個(gè)復(fù)數(shù)字符串 -?:?gettext?的別名
例如你可以容易地這樣打印一個(gè)已翻譯的字符串:
{{ _('Hello World!') }}
你可以使用?format?過濾器來使用占位符:
{{ _('Hello %(user)s!')|format(user=user.username) }}
因?yàn)槠渌Z言可能不會用同樣的順序使用詞匯,要使用多個(gè)占位符,應(yīng)始終用字符 串參數(shù)傳給?format?。
Changed in version 2.5.
如果激活了新樣式的 gettext 調(diào)用(?新樣式 Gettext?),使用占位符 會更加簡單:
{{ gettext('Hello World!') }}
{{ gettext('Hello %(name)s!', name='World') }}
{{ ngettext('%(num)d apple', '%(num)d apples', apples|count) }}
注意?ngettext?函數(shù)的格式化字符串自動接受?num?參數(shù)作為計(jì)數(shù)作為附加的 常規(guī)參數(shù)。
如果加載了表達(dá)式語句擴(kuò)展,一個(gè)名為?do?的擴(kuò)展即可用。它工作幾乎如同常規(guī)的變量 表達(dá)式(?{{?...?}}?),只是它不打印任何東西。這可以用于修改列表:
{% do navigation.append('a string') %}
如果應(yīng)用啟用來?循環(huán)控制?,則可以在循環(huán)中使用?break?和?continue?。到達(dá)?break?時(shí),循環(huán)終止。到達(dá)?continue?時(shí),當(dāng)前處理會終止并 從下一次迭代繼續(xù)。
這個(gè)循環(huán)每兩項(xiàng)跳過一次:
{% for user in users %}
{%- if loop.index is even %}{% continue %}{% endif %}
...
{% endfor %}
同樣,這個(gè)循環(huán) 10 次迭代之后會終止處理:
{% for user in users %}
{%- if loop.index >= 10 %}{% break %}{% endif %}
{%- endfor %}
New in version 2.3.
如果應(yīng)用啟用了?With 語句?,將允許在模板中使用?with?關(guān)鍵 字。這使得創(chuàng)建一個(gè)新的內(nèi)作用域。這個(gè)作用域中的變量在外部是不可見的。
With 用法簡介:
{% with %}
{% set foo = 42 %}
{{ foo }} foo is 42 here
{% endwith %}
foo is not visible here any longer
因?yàn)樵谧饔糜虻拈_始設(shè)置變量很常見,你可以在 with 語句里這么做。下面的兩 個(gè)例子是等價(jià)的:
{% with foo = 42 %}
{{ foo }}
{% endwith %}
{% with %}
{% set foo = 42 %}
{{ foo }}
{% endwith %}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: