flask中jinjia2模板引擎使用详解4
2018-03-07 22:05
239 查看
接上文
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)运行效果如下:
我们以上面的例子来说明其中几个变量的使用{% 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内联过滤来筛选数据,举例:<h1>长度大于6的:</h1>
{% 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作判断:<h1>空列表</h1>
{% for item in items %}
<li>{{ item }}</li>
{% else %}
<li>未找到数据 </li>
{% endfor %}运行效果:
递归调用for循环
通过在for中使用recursive 关键字,并且在需要递归的地方使用loop方法就可以实现递归调用for循环
引用官方的例子如下:<ulclass="sitemap">
本文源码地址:链接:https://pan.baidu.com/s/1NegJvNPUYs6lHAWNNSMGmQ 密码:pa6l
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内联过滤来筛选数据,举例:<h1>长度大于6的:</h1>
{% 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作判断:<h1>空列表</h1>
{% for item in items %}
<li>{{ item }}</li>
{% else %}
<li>未找到数据 </li>
{% endfor %}运行效果:
递归调用for循环
通过在for中使用recursive 关键字,并且在需要递归的地方使用loop方法就可以实现递归调用for循环
引用官方的例子如下:<ulclass="sitemap">
{%- for item in sitemap recursive%}
<li><ahref="{{ item.href|e}}">{{ item.title }}</a>
{%- if item.children -%}
<ulclass="submenu">{{loop(item.children)}}</ul>
{%- endif%}</li>
{%- endfor%}
</ul>
本文源码地址:链接:https://pan.baidu.com/s/1NegJvNPUYs6lHAWNNSMGmQ 密码:pa6l
相关文章推荐
- flask中jinjia2模板引擎使用详解5
- flask中jinjia2模板使用详解2
- flask中jinjia2模板引擎详解3
- flask中的jinjia2模板引擎详解1
- flask中jinjia2模板引擎详解1
- 详解flask入门模板引擎
- 一个基于flask的web应用诞生 使用模板引擎和表单插件(2)
- 边做边学Python Flask Web开发(4)-- 使用Jinjia2模板(上)
- 模板引擎使用详解:包含公共模板
- 详解在express站点中使用ejs模板引擎
- Python的Flask框架标配模板引擎Jinja2的使用教程
- Jade模板引擎使用详解
- template.js前端模板引擎使用详解
- 模板引擎使用详解:包含公共模板
- Python的Flask框架标配模板引擎Jinja2的使用教程
- 如何在express使用doT模板引擎
- VTemplate模板引擎的使用--高级篇
- PHP 中使用 Smarty 之初:认识 Smarty 模板引擎
- Sql2005性能工具(SQL Server Profiler和数据库引擎优化顾问)使用方法详解
- VTemplate模板引擎的使用—Function标签