Django 循环模板标签

1,循环模板标签

Django 模板系统中提供了多种循环模板标签来迭代数据并显示列表、字典或其他可迭代对象。

1.2 {% for %} 标签

用于迭代列表或可迭代对象,并为每个元素提供上下文变量。

复制代码
{% for item in items %}
    {{ item }} <!-- 渲染当前迭代项 -->
{% endfor %}

1.3 {% for %} 与索引

在迭代时,可以使用 forloop.counter 访问当前迭代的索引(从1开始)。

复制代码
{% for item in items %}
    {{ forloop.counter }}: {{ item }}
{% endfor %}

1.4 {% for %} 与反转索引

使用 forloop.revcounter 访问当前迭代的反转索引(从列表长度开始递减)。

复制代码
{% for item in items %}
    {{ forloop.revcounter }}: {{ item }}
{% endfor %}

1.5 {% for %} 与迭代次数

使用 forloop.last 判断当前迭代是否是最后一次迭代。

复制代码
{% for item in items %}
    {{ item }}
    {% if not forloop.last %}, {% endif %}
{% endfor %}

1.6 {% empty %} 标签

如果被迭代的变量为空或不存在,将渲染 {% empty %} 标签和与之对应的 {% endfor %} 之间的内容。

复制代码
{% for item in items %}
    {{ item }}
{% empty %}
    <!-- 没有可迭代的项目时渲染 -->
    No items to display.
{% endfor %}

1.7{% for %} 与字典

当迭代字典时,可以使用 forloop.counter0forloop.counter 访问键和值。

复制代码
{% for key, value in my_dict.items %}
    {{ key }}: {{ value }}
{% endfor %}

示例:

2,添加HTML代码

Test/templates/4/for_demo.html

复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<table border="1">
    {% for list in lists %}

        {% if forloop.first %}
        <tr>
            <td>
                第一个值:{{ list.书名 }}
            </td>
        </tr>
        {% endif %}

        <tr>
            <td>
                当前值:{{ list.书名 }}, 价格:{{ list.价格 }}, 当前正序索引:{{ forloop.counter0 }}, 当前倒序索引:{{ forloop.revcounter0 }}
            </td>
        </tr>

        {% if forloop.last %}
        <tr>
            <td>
                最后一个值:{{ list.书名}}
            </td>
        </tr>
        {% endif %}


    {% endfor %}

</table>

</body>
</html>

3,添加视图函数

Test/app4/views.py

复制代码
from django.shortcuts import render

# Create your views here.
def var(request):
    name = '小6'

    # 列表对象
    lists = ['java', 'python', 'c', 'c++', 'js']

    # 字典对象
    dicts = {'姓名': '小强', '年龄':25, '性别':'男'}

    return render(request, '4/var.html', {'lists': lists, 'dicts': dicts, 'name':name})

def if_demo(request):
    age = 18

    return render(request, '4/if_demo.html', {'age':age})

def for_demo(request):
    dict1 = {'书名':'Django开发教程', '价格':28, '作者':'小强'}
    dict2 = {'书名':'java开发教程', '价格':38, '作者':'小红'}
    dict3 = {'书名':'python开发教程', '价格':48, '作者':'小6'}
    dict4 = {'书名':'c开发教程', '价格':58, '作者':'小7'}

    lists = [dict1, dict2, dict3, dict4]
    return render(request, '4/for_demo.html', {'lists':lists})

4,添加路由地址

Test/app4/urls.py

5,访问页面

http://127.0.0.1:8000/app4/for_demo

相关推荐
Lucifer__hell11 小时前
【python+tkinter】图形界面简易计算器的实现
开发语言·python·tkinter
2301_8129148711 小时前
py day34 装饰器
开发语言·python
ZZHHWW11 小时前
RocketMQ vs Kafka01 - 存储架构深度对比
后端
我的xiaodoujiao12 小时前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 24--数据驱动--参数化处理 Excel 文件 1
python·学习·测试工具·pytest
开心-开心急了12 小时前
关于Flutter与Qt for python 的一些技术、开源、商用等问题
开发语言·python·qt·flutter
依_旧12 小时前
MySQL下载安装配置(超级超级入门级)
java·后端
熊小猿12 小时前
RabbitMQ死信交换机与延迟队列:原理、实现与最佳实践
开发语言·后端·ruby
淘源码d12 小时前
什么是医院随访系统?成熟在用的智慧随访系统源码
java·spring boot·后端·开源·源码·随访系统·随访系统框架
武子康12 小时前
大数据-147 Java 访问 Apache Kudu:从建表到 CRUD(含 KuduSession 刷新模式与多 Master 配置)
大数据·后端·nosql
@小码农12 小时前
2025年北京海淀区中小学生信息学竞赛第一赛段试题(附答案)
人工智能·python·算法·蓝桥杯