027:for標籤使用詳解
阿新 • • 發佈:2018-12-24
for標籤使用詳解:
for...in... 標籤: for...in... 類似於 Python 中的 for...in... 。可以遍歷列表、元組、字串、字典等一切可以遍歷的物件。示例程式碼如下:
{% for person in persons %} <p>{{ person.name }}</p> {% endfor %}
如果想要反向遍歷,那麼在遍歷的時候就加上一個 reversed 。示例程式碼如下:
{% for person in persons reversed %} <p>{{ person.name }}</p> {% endfor %}
遍歷字典的時候,需要使用 items 、 keys 和 values 等方法。在 DTL 中,執行一個方法不能使用圓括號的形式。遍歷字典示例程式碼如下:
{% for key,value in person.items %} <p>key:{{ key }}</p> <p>value:{{ value }}</p> {% endfor %}
在 for 迴圈中, DTL 提供了一些變數可供使用。這些變數如下:
- forloop.counter :當前迴圈的下標。以1作為起始值。
- forloop.counter0 :當前迴圈的下標。以0作為起始值。
- forloop.revcounter :當前迴圈的反向下標值。比如列表有5個元素,那麼第一次遍歷這個屬性是等於5,第二次是4,以此類推。並且是以1作為最後一個元素的下標。
- forloop.revcounter0 :類似於forloop.revcounter。不同的是最後一個元素的下標是從0開始。
- forloop.first :是否是第一次遍歷。
- forloop.last :是否是最後一次遍歷。
- forloop.parentloop :如果有多個迴圈巢狀,那麼這個屬性代表的是上一級的for迴圈。
3. for...in...empty 標籤:這個標籤使用跟 for...in... 是一樣的,只不過是在遍歷的物件如果沒有元素的情況下,會執行 empty 中的內容。示例程式碼如下:
{% for person in persons %} <li>{{ person }}</li> {% empty %} <li>暫時還沒有任何人</li> {% endfor %}
例項程式碼如下:
views.py:
from django.shortcuts import render # Create your views here. # my_dict = {"name": 'tom'} # my_list = ["jerry",] # my_tupe = ("alice",) my_dict = {'books':[ {"name":'紅樓夢','author':'曹雪芹',"price":150}, {"name":'水滸傳','author':'羅貫中',"price":140}, {"name":'三國演義','author':'施耐庵',"price":160}, {"name":'西遊記','author':'吳承恩',"price":130}, ], # "comment": ['內容不錯', "真的假的啊"], "comment": [], } def index(request): return render(request, 'index.html', context=my_dict) # return render(request, 'index.html', context={'age': 20}) # return render(request, 'index.html', context={'username': "jack_cheng", # 'list1':my_dict, # 'list2':my_list, # 'list3':my_tupe})
url.py:
from django.contrib import admin from django.urls import path from front import views urlpatterns = [ path('admin/', admin.site.urls), path('front/', views.index), ]
index.html:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> {#<p>字串:{{ username }}</p>#} {#<p>字典:{{ list1.name }}</p>#} {#<p>列表:{{ list2.0 }}</p>#} {#<p>元組:{{ list3.0 }}</p>#} {#{% if age < 18 %}#} {# <p>您是未成年人</p>#} {#{% elif age >= 18 and age < 80 %}#} {# <p>您是成年人</p>#} {#{% else %}#} {# <p>您是老年人</p>#} {#{% endif %}#} <table> <thead> <tr> <td>序號</td> <td>作者</td> <td>書名</td> <td>價格</td> </tr> </thead> <tbody> {% for book in books %} {% if forloop.first %} <tr style="background: red;"> {% elif forloop.last %} <tr style="background: pink"> {% else %} <tr> {% endif %} <td>{{ forloop.counter }}</td> <td>{{ book.name }}</td> <td>{{ book.author }}</td> <td>{{ book.price }}</td> </tr> {% endfor %} </tbody> </table> {% for item in comment %} <li>{{ item }}</li> {% empty %} <li>抱歉內容為空</li> {% endfor %} </body> </html>