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>
原文地址:https://www.cnblogs.com/zheng-weimin/p/10170795.html
时间: 2024-10-10 00:39:31