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内联过滤来筛选数据,举例:

<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循环

引用官方的例子如下:

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

本源代码:链接:https://pan.baidu.com/s/1wRG-W1kY0o1z2zi1UTmRhQ 密码:yrzz

原文地址:https://www.cnblogs.com/itxb/p/8519415.html

时间: 2024-11-05 13:34:14

flask中jinjia2模板引擎详解4的相关文章

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

接上文 For循环 和其它编程语言一样,for用来编辑列表中的项.下面以一个例子来说明for在flask的jinjia2模板中的使用. 创建一个模板list.html 代码如下: {% %} {% %}      {% %}      <>{{ }}</>      {% %} {% %} 在code.py中添加url规则 @app.route() renderList():      users = [,,]      render_template(,users = users

flask中jinjia2模板引擎的使用详解3

接上文 模板继承 Jinji2中的模板继承是jinjia2比较强大的功能之一. 模板继承可以定义一个父级公共的模板,把同一类的模板框架定义出来共享. 这样做一方面可以提取共享代码,减少代码冗余和重复的工作量 另一方面,对于后期的维护和管理也非常方便. 一个根模板(或叫基模板)主要有三部分组成: 一是公共的js,css等资源文件的引用, 二是定义好一个布局框架, 三是定义子模板可以重写的部分(block) 下面我们以一个例子来说明模板继承的使用方法 1. 创建一个基模板 选中templates文件

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

接上文 宏 可以理解为函数,即把一些常用的模板片段做好封装,以便于重用,减少工作量和维护难度. 宏的定义很简单: {%macro xxx()%} ##这里写内容 {%endmacro%} 下面引用官方的一个例子进行说明: {% macro input(name, value='', type='text', size=20) -%} <input type="{{ type }}" name="{{ name }}" value="{{ value|

Spring中的jar包详解

下面给大家说说spring众多jar包的特点吧,无论对于初学spring的新手,还是spring高手,这篇文章都会给大家带来知识上的收获,如果你已经十分熟悉本文内容就当做一次温故知新吧.spring.jar 是包含有完整发布的单个jar包,spring.jar中除了spring-mock.jar里所包含的内容外其他所有jar包的内容,因为只有在研发环境下才会用到spring-mock.jar来进行辅助测试,正式应用系统中是用不得这些类的. 除了spring.jar文件,Spring还包括有其他1

模版引擎详解-兄弟连新版thinkphp 15、16

第15节:ThinkPHP 3.1.2 模板变量详解 1.模版基本使用 IndexAction里添加index方法,内容为: $this->assign('name','赵桐正');  // 将值“赵桐正”交给标识“name” $this->display(); //显示模版,Tpl文件夹下默认index.html Tpl下的模版index.html里显示模版变量name的值 {$name} 模版变量的值是由后台分配过来的. 2.模版变量输出: 支持标量输出:字符串.数字.bool等 支持常规

如何查看mysql数据库的引擎/MySQL数据库引擎详解

一般情况下,mysql会默认提供多种存储引擎,你可以通过下面的查看: 看你的mysql现在已提供什么存储引擎:mysql> show engines; 看你的mysql当前默认的存储引擎:mysql> show variables like '%storage_engine%'; 你要看某个表用了什么引擎(在显示结果里参数engine后面的就表示该表当前用的存储引擎):mysql> show create table 表名; MySQL数据库引擎详解 作为Java程序员,MySQL数据库

36 web系统架构及cache基础、varnish4基础应用、varnish状态引擎详解及vcl

02 varnish4基础应用 配置环境: node1 CentOS7.2 192.168.1.131 [[email protected] ~]# yum -y install varnish [[email protected] ~]# vim /etc/varnish/varnish.params 修改 VARNISH_STORAGE="file,/var/lib/varnish/varnish_storage.bin,1G" 为 VARNISH_STORAGE="ma

图像处理中的数学原理详解21——PCA实例与图像编码

欢迎关注我的博客专栏"图像处理中的数学原理详解" 全文目录请见 图像处理中的数学原理详解(总纲) http://blog.csdn.net/baimafujinji/article/details/48467225 图像处理中的数学原理详解(已发布的部分链接整理) http://blog.csdn.net/baimafujinji/article/details/48751037 如果你对PCA的推导和概念还不是很清楚,建议阅读本文的前导文章 http://blog.csdn.net/

关于开设“图像处理中的数学原理详解”博客专栏的说明

近期,我在CSDN开设了一个博客专栏"图像处理中的数学原理详解",专门用于发布这个系列的文章.. 全文目录请见 图像处理中的数学原理详解(总纲) http://blog.csdn.net/baimafujinji/article/details/48467225 我整理了图像处理中可能用到的一些数学基础,将其分成了6个章节(全文目录见上方链接).如果你对其中的某一小节特别感兴趣,但是它还没有被发布,你可以在博客下方留言,我会据此调整发布顺序.但是请务必精确地指出章节标号(例如1.3.7