7.經常使用模板標籤

 

經常使用模板標籤

1.if語句

1.全部的標籤都是在{%%}之間
2.if標籤you閉合標籤.就是{% endif %}.
3.if標籤的判斷運算符,就跟python中的判斷運算符是同樣的.==、!=、<、<=、>、>=、in、not in、is、is not等判斷運算符
4.還可使用elifelsejavascript

2.for...in...標籤:

for...in...相似於Python中的for...in...。能夠遍歷列表、元組、字符串、字典等一切能夠遍歷的對象。示例代碼以下:html

{% for person in persons %}
<p>{{ person.name }}</p>
{% endfor %}

若是想要反向遍歷,那麼在遍歷的時候就加上一個reversed。示例代碼以下:java

{% for person in persons reversed %}
<p>{{ person.name }}</p>
{% endfor %}

遍歷字典的時候,須要使用itemskeysvalues等方法。在DTL中,執行一個方法不能使用圓括號的形式。遍歷字典示例代碼以下:python

{% for key,value in person.items %}
<p>key:{{ key }}</p>
<p>value:{{ value }}</p>
{% endfor %}

for循環中,DTL提供了一些變量可供使用。這些變量以下:ios

  • forloop.counter:當前循環的下標。以1做爲起始值。
  • forloop.counter0:當前循環的下標。以0做爲起始值。
  • forloop.revcounter:當前循環的反向下標值。好比列表有5個元素,那麼第一次遍歷這個屬性是等於5,第二次是4,以此類推。而且是以1做爲最後一個元素的下標。
  • forloop.revcounter0:相似於forloop.revcounter。不一樣的是最後一個元素的下標是從0開始。
  • forloop.first:是不是第一次遍歷。
  • forloop.last:是不是最後一次遍歷。
  • forloop.parentloop:若是有多個循環嵌套,那麼這個屬性表明的是上一級的for循環。

模板中的for…in…沒有continue和break語句,這一點和Python中有很大的不一樣,必定要記清楚! web

3.for...in...empty標籤:

這個標籤使用跟for...in...是同樣的,只不過是在遍歷的對象若是沒有元素的狀況下,會執行empty中的內容。示例代碼以下:django

{% for person in persons %}
<li>{{ person }}</li>
{% empty %}
暫時尚未任何人
{% endfor %}

4.with標籤:

1.在模板中,想要定義變量,能夠經過with語句來實現.
2.with語句有兩種使用方式,第一種是with xxx=xxx的形式,第二種是with xx as xx
的形式.
3.定義的變量只能在with語句塊中使用,在with語句塊使用是取不到這個變量的
示例代碼以下:api

{% with zs=persons.0%}
        <p>{{ zs }}</p>
        <p>{{ zs }}</p>
    {% endwith %}
    下面這個由於超過了with語句塊,所以不能使用
    <p>{{ zs }}</p>

    {% with persons.0 as zs %}
        <p>{{ zs }}</p>
    {% endwith %}

5.url標籤筆記:

url標籤:在模版中,咱們常常要寫一些url,好比某個a標籤中須要定義href屬性。固然若是經過硬編碼的方式直接將這個url寫死在裏面也是能夠的。可是這樣對於之後項目維護可能不是一件好事。所以建議使用這種反轉的方式來實現,相似於django中的reverse同樣。示例代碼以下:markdown

<a href="{% url 'book:list' %}">圖書列表頁面</a>

若是url反轉的時候須要傳遞參數,那麼能夠在後面傳遞。可是參數分位置參數和關鍵字參數。位置參數和關鍵字參數不能同時使用。示例代碼以下:ide

# path部分
path('detail/<book_id>/',views.book_detail,name='detail')

# url反轉,使用位置參數
<a href="{% url 'book:detail' 1 %}">圖書詳情頁面</a>

# url反轉,使用關鍵字參數
<a href="{% url 'book:detail' book_id=1 %}">圖書詳情頁面</a>

若是想要在使用url標籤反轉的時候要傳遞查詢字符串的參數,那麼必需要手動在在後面添加。示例代碼以下:

<a href="{% url 'book:detail' book_id=1 %}?page=1">圖書詳情頁面</a>

若是須要傳遞多個參數,那麼經過空格的方式進行分隔。示例代碼以下:

<a href="{% url 'book:detail' book_id=1 page=2 %}">圖書詳情頁面</a>

6.autoescape自動轉義

  1. DTL中默認已經開啓了自動轉義,會將那些特殊字符進行轉義.好比會將<轉義成&lt;等.
  2. 若是你不知道本身在幹什麼,那麼最好是使用DTL的自動轉義.這樣網站纔不容易出現XSS漏洞.
  3. 若是變量確實是可信任的,那麼可使用autoescape標籤來關掉自動轉義.示例代碼以下:
    {% autoescape off %}
            {% info %}
        {% endautoescape%}

7.verbatim標籤

verbatim標籤:默認在DTL模板中是會去解析那些特殊字符的.好比{{,{%%}等.若是你在某個代碼片斷中不想使用DTL的解析引擎,那麼你能夠把這個代碼片斷放在verbatim標籤中.示例代碼以下:

{% verbatim %}
    {{ hello }}
{% endverbatim %}
相關文章
相關標籤/搜索