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

Django

2018-02-24 15:39 更新

如果你之前使用 Django 模板,你應(yīng)該會(huì)發(fā)現(xiàn)跟 Jinja2 非常相似。實(shí)際上, 很多的語(yǔ)法元素看起來相同,工作也相同。

盡管如此, Jinja2 提供了更多的在之前文檔中描述的語(yǔ)法元素,并且某些 工作會(huì)有一點(diǎn)不一樣。

本節(jié)介紹了模板差異。由于 API 是從根本上不同,我們不會(huì)再這里贅述。

方法調(diào)用

在 Django 中,方法調(diào)用是隱式的。在 Jinja2 中,你必須指定你要調(diào)用一個(gè)對(duì)象。如 此,這段 Django 代碼:

{% for page in user.get_created_pages %}
    ...
{% endfor %}

在 Jinja 中應(yīng)該是這樣:

{% for page in user.get_created_pages() %}
    ...
{% endfor %}

這允許你給函數(shù)傳遞變量,且宏也使用這種方式,而這在 Django 中是不可能的。

條件

在 Django 中你可以使用下面的結(jié)構(gòu)來判斷是否相等:

{% ifequal foo "bar" %}
    ...
{% else %}
    ...
{% endifequal %}

在 Jinja2 中你可以像通常一樣使用 if 語(yǔ)句和操作符來做比較:

{% if foo == 'bar' %}
    ...
{% else %}
    ...
{% endif %}

你也可以在模板中使用多個(gè) elif 分支:

{% if something %}
    ...
{% elif otherthing %}
    ...
{% elif foothing %}
    ...
{% else %}
    ...
{% endif %}

過濾器參數(shù)

Jinja2 為過濾器提供不止一個(gè)參數(shù)。參數(shù)傳遞的語(yǔ)法也是不同的。一個(gè)這樣的 Django 模板:

{{ items|join:", " }}

在 Jinja2 中是這樣:

{{ items|join(', ') }}

實(shí)際上這有點(diǎn)冗贅,但它允許不同類型的參數(shù)——包括變量——且不僅是一種。

測(cè)試

除過濾器外,同樣有用 is 操作符運(yùn)行的測(cè)試。這里是一些例子:

{% if user.user_id is odd %}
    {{ user.username|e }} is odd
{% else %}
    hmm. {{ user.username|e }} looks pretty normal
{% endif %}

循環(huán)

因?yàn)檠h(huán)與 Django 中的十分相似,僅有的不兼容是 Jinja2 中循環(huán)上下文的特殊變 量名為loop?而不是 Django 中的?forloop?。

周期計(jì)

Jinja 中沒有?{%?cycle?%}?標(biāo)簽,因?yàn)樗请[式的性質(zhì)。而你可以用循環(huán)對(duì)象 的?cycle?方法實(shí)現(xiàn)幾乎相同的東西。

下面的 Django 模板:

{% for user in users %}
    <li class="{% cycle 'odd' 'even' %}">{{ user }}</li>
{% endfor %}

Jinja 中看起來是這樣:

{% for user in users %}
    <li class="{{ loop.cycle('odd', 'even') }}">{{ user }}</li>
{% endfor %}

沒有與?{%?cycle?...?as?variable?%}?等價(jià)的。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)