flask中jinjia2模板引擎使用详解4

接上文

For循环

和其它编程语言一样,for用来编辑列表中的项。下面以一个例子来说明for在flask的jinjia2模板中的使用。

创建一个模板list.html

代码如下:

{% extends "base.html" %}    {% block content %}        {% for user in users %}        <li>{{ user }}</li>        {% endfor %}        {% endblock %}  

在code.py中添加url规则

@app.route("/tmpl/list")    def renderList():        users = ["zhang san","li si","wang wu"]        return render_template("list.html",users = users)  

运行效果如下:

变量

描述

loop.index

当前循环迭代的次数(从 1 开始)

loop.index0

当前循环迭代的次数(从 0 开始)

loop.revindex

到循环结束需要迭代的次数(从 1 开始)

loop.revindex0

到循环结束需要迭代的次数(从 0 开始)

loop.first

如果是第一次迭代,为 True 。

loop.last

如果是最后一次迭代,为 True 。

loop.length

序列中的项目数。

loop.cycle

在一串序列间期取值的辅助函数。见下面的解释。

我们以上面的例子来说明其中几个变量的使用

{% for user in users %}    <li>{{ user }},"first:"{{ loop.first }},"last:"{{ loop.last }},"length:"{{ loop.length }},"index:"{{ loop.index }},"index0:"{{ loop.index0 }},"revindex:"{{ loop.revindex }},"revindex0:"{{ loop.revindex0 }},"cycle:"{{ loop.cycle("1","2") }}</li>    {% endfor %}  

运行效果:

通过if内联过滤来筛选数据

Jinjia2模板中的循环不支持break和continue语法。

可以通过if内联过滤来筛选数据,举例:

<h4>长度大于6的:</h4>       {% for user in users if user| string | length >6 %}      <li>{{ user }},"first:"{{ loop.first }},"last:"{{ loop.last }},"length:"{{ loop.length }},"index:"{{ loop.index }},"index0:"{{ loop.index0 }},"revindex:"{{ loop.revindex }},"revindex0:"{{ loop.revindex0 }},"cycle:"{{ loop.cycle("1","2") }}</li>      {% endfor %}  

运行效果:

Li si因长度小于6,未被显示出来

使用else来处理空列表

当一个for循环的数据源为空时,可以用else进行替换方案显示,比如我们for一个不存在的对象items,然后用else作判断:

<h4>空列表</h4>    {% for item in items %}    <li>{{ item }}</li>    {% else %}        <li>未找到数据 </li>    {% endfor %}  

运行效果:

递归调用for循环

通过在for中使用recursive 关键字,并且在需要递归的地方使用loop方法就可以实现递归调用for循环

引用官方的例子如下:

<ul >  {%- for item in sitemap recursive %}     <li><a href="{{ item.href|e }}">{{ item.title }}</a>     {%- if item.children -%}         <ul >{{ loop(item.children) }}</ul>     {%- endif %}</li>  {%- endfor %}  </ul>  

原文出处:zhihu -> https://zhuanlan.zhihu.com/p/34291407

本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如果侵犯你的利益,请发送邮箱到 [email protected],我们会很快的为您处理。