027:for标签使用详解

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>

猜你喜欢

转载自www.cnblogs.com/zheng-weimin/p/10170795.html