Jinja2循环控制

目录

描述

Jinja2循环控制语法

使用示例

注意事项


 

描述

Jinja2模板中的条件控制语句(for)可以控制前端逻辑显示。

 

Jinja2循环控制语法

Jinja2的循环控制与Python类似,但还是有一些不同:

{% for condition %}
    body...
{% endfor %}

每个循环控制语句块结束后都要另起一行加上 {% endfor %},否则服务器会报错500。

 

使用示例

在页面中循环打印列表中的每个元素。

HTML文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Jinja2 Circulation Control</title>
</head>
<body>
    <ul>
    {% for product in products %}
        <li>{{product}}</li>
    {% endfor %}
    </ul>
</body>
</html>

Python脚本:

from flask import Flask, render_template

app = Flask(__name__)


@app.route("/")
def index():
    products = ["iphoneX", "MacBook Pro", "Huawei"]
    kwargs = {
        "products": products
    }
    return render_template("for.html", **kwargs)


if __name__ == '__main__':
    app.run()

运行结果:

 

注意事项

Jinja2模板中的循环控制语句要使用 {% endfor %}结尾。否则在访问接口时会报错500。

 

### Jinja2 中实现循环换行的方法 在 Jinja2 模板引擎中,可以通过 `loop` 对象以及条件语句来控制循环中的换行逻辑。以下是具体的实现方式: #### 使用 `if` 条件判断并结合 `loop.index` 通过 `loop.index` 或者 `loop.index0` 判断当前循环的位置是否满足特定条件(如每 N 行换一次),然后插入所需的 HTML 标签或者空白字符。 ```jinja {% for item in items %} {% if loop.index is divisibleby(3) and not loop.first %} </br> {% endif %} {{ item }} {% endfor %} ``` 上述代码片段展示了如何每隔三行插入一个 `<br>` 标签[^1]。这里的关键在于使用了 `divisibleby()` 测试器来检测索引是否能被整除,并且排除了首项的情况以避免不必要的换行。 #### 结合 `loop.cycle` 达成更复杂的样式需求 除了简单的换行外,还可以利用 `loop.cycle` 函数为不同行设置交替属性,比如颜色变化或额外的分隔符。例如,在表格数据展示场景下非常实用。 ```jinja <table> {% for row in rows %} <tr class="{{ loop.cycle('odd', 'even') }}"> <td>{{ row }}</td> </tr> {% if loop.index is divisibleby(5) and not loop.last %} <tr><td colspan="1"><hr></td></tr> <!-- 每五行加一条水平线 --> {% endif %} {% endfor %} </table> ``` 此例子不仅实现了基于计数的特殊间隔处理 (即每五行为一组),还应用了 `loop.cycle` 方法动态切换 CSS 类名以便于视觉区分奇偶行[^2]。 ### 总结 以上两种方法分别适用于基本功能扩展和复杂布局设计的需求。开发者可以根据实际应用场景灵活选用合适的策略完成任务目标。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值