Sealyu

          --- 博客已遷移至: http://www.sealyu.com/blog

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            618 隨筆 :: 87 文章 :: 225 評論 :: 0 Trackbacks

          Django不支持退出循環(huán)操作。如果我們想退出循環(huán),可以改變正在迭代的變量,讓其僅僅包含需要迭代的項目。同理,Django也不支持continue語句,我們無法讓當(dāng)前迭代操作跳回到循環(huán)頭部。(請參看本章稍后的理念和限制小節(jié),了解下決定這個設(shè)計的背后原因)

          {% for %} 標(biāo)簽在循環(huán)中設(shè)置了一個特殊的 forloop 模板變量。這個變量能提供一些當(dāng)前循環(huán)進展的信息:

          forloop.counter 總是一個表示當(dāng)前循環(huán)的執(zhí)行次數(shù)的整數(shù)計數(shù)器。這個計數(shù)器是從1開始的,所以在第一次循環(huán)時 forloop.counter 將會被設(shè)置為1。例子如下:

          {% for item in todo_list %}
          <p>{{ forloop.counter }}: {{ item }}</p>
          {% endfor %}

          forloop.counter0 類似于 forloop.counter ,但是它是從0計數(shù)的。第一次執(zhí)行循環(huán)時這個變量會被設(shè)置為0。

          forloop.revcounter 是表示循環(huán)中剩余項的整型變量。在循環(huán)初次執(zhí)行時 forloop.revcounter 將被設(shè)置為序列中項的總數(shù)。最后一次循環(huán)執(zhí)行中,這個變量將被置1。

          forloop.revcounter0 類似于 forloop.revcounter ,但它以0做為結(jié)束索引。在第一次執(zhí)行循環(huán)時,該變量會被置為序列的項的個數(shù)減1。在最后一次迭代時,該變量為0。

          forloop.first 是一個布爾值。在第一次執(zhí)行循環(huán)時該變量為True,在下面的情形中這個變量是很有用的。

          {% for object in objects %}
          {% if forloop.first %}<li class="first">{% else %}<li>{% endif %}
          {{ object }}
          </li>
          {% endfor %}

          forloop.last 是一個布爾值;在最后一次執(zhí)行循環(huán)時被置為True。一個常見的用法是在一系列的鏈接之間放置管道符(|)

          {% for link in links %}{{ link }}{% if not forloop.last %} | {% endif %}{% endfor %}

          The above template code might output something like this::

          Link1 | Link2 | Link3 | Link4

          3.

          forloop.parentloop 是一個指向當(dāng)前循環(huán)的上一級循環(huán)的 forloop 對象的引用(在嵌套循環(huán)的情況下)。例子在此:

          {% for country in countries %}
          <table>
          {% for city in country.city_list %}
          <tr>
          <td>Country #{{ forloop.parentloop.counter }}</td>
          <td>City #{{ forloop.counter }}</td>
          <td>{{ city }}</td>
          </tr>
          {% endfor %}
          </table>
          {% endfor %}

          forloop 變量僅僅能夠在循環(huán)中使用,在模板解析器碰到 {% endfor %} 標(biāo)簽時, forloop 就不可訪問了。

          Context和forloop變量

          在一個 {% for %} 塊中,已存在的變量會被移除,以避免 forloop 變量被覆蓋。Django會把這個變量移動到 forloop.parentloop 中。通常我們不用擔(dān)心這個問題,但是一旦我們在模板中定義了 forloop 這個變量(當(dāng)然我們反對這樣做),在 {% for %} 塊中它會在 forloop.parentloop 被重新命名。

          for
          輪詢數(shù)組中的每一元素。例如顯示一個給出的運動員的序列``athlete_list``:
          <ul>
          {% for athlete in athlete_list %}
          <li>{{ athlete.name }}</li>
          {% endfor %}
          </ul>
          你同樣可以反過來用``{% for obj in list reversed %}``輪詢一個列表。
          ``for``循環(huán)設(shè)置了許多循環(huán)中有用的變量(見表F-1)。
          Inline literal start-string without end-string.
          表 F-1. {% for %}循環(huán)中的可用變量
          變量名描述
          forloop.counter 循環(huán)的當(dāng)前重復(fù)值 (標(biāo)示為1)。
          forloop.counter0 循環(huán)的當(dāng)前重復(fù)值 (標(biāo)示為0)。
          forloop.revcounter 循環(huán)到最后的重復(fù)數(shù) (標(biāo)示為1)。
          forloop.revcounter0 循環(huán)到最后的重復(fù)數(shù) (標(biāo)示為0)。
          forloop.first 第一次循環(huán)則為``True``。
          forloop.last 最后一次循環(huán)則為``True`` 。
          forloop.parentloop 用于嵌套循環(huán),該循環(huán)位于當(dāng)前循環(huán)之上。


          posted on 2009-05-28 10:38 seal 閱讀(1150) 評論(0)  編輯  收藏 所屬分類: Python
          主站蜘蛛池模板: 金沙县| 延吉市| 宁波市| 桦甸市| 新昌县| 莱州市| 平潭县| 阿坝| 闵行区| 黄山市| 马龙县| 沧州市| 莱西市| 永川市| 阜康市| 搜索| 建德市| 德惠市| 尉犁县| 泸定县| 尼木县| 韶山市| 玛沁县| 甘南县| 钦州市| 咸丰县| 光山县| 缙云县| 麦盖提县| 江陵县| 阿城市| 叙永县| 嵊泗县| 达孜县| 固安县| 定南县| 恩平市| 安西县| 林甸县| 白城市| 平南县|