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

接上文

For循环

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

创建一个模板list.html

代码如下:

{% %}
{% %}
     {% %}
     <>{{ }}</>
     {% %}
{% %}

在code.py中添加url规则

@app.route()
renderList():
     users = [,,]
     render_template(,users = users)

运行效果如下:


变量


描述


loop.index


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


loop.index0


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


loop.revindex


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


loop.revindex0


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


loop.first


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


loop.last


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


loop.length


序列中的项目数。


loop.cycle


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

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

{% %}
<>{{ }},"first:"{{ .}},"last:"{{ .}},"length:"{{ .}},"index:"{{ .}},"index0:"{{ .}},"revindex:"{{ .}},"revindex0:"{{ .}},"cycle:"{{ .(,) }}</>
{% %}

运行效果:

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

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

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

<>长度大于6的:</>
    {% | | >6 %}
   <>{{ }},"first:"{{ .}},"last:"{{ .}},"length:"{{ .}},"index:"{{ .}},"index0:"{{ .}},"revindex:"{{ .}},"revindex0:"{{ .}},"cycle:"{{ .(,) }}</>
   {% %}

运行效果:

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

使用else来处理空列表

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

<>空列表</>
{% %}
<>{{ }}</>
{% %}
     <>未找到数据 </>
{% %}

运行效果:

递归调用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

原文地址:http://blog.51cto.com/12482328/2083612

时间: 2024-10-07 10:47:06

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

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

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

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规

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

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

模板引擎使用详解:包含公共模板

ThinkPHP内置了一个基于XML的编译型模板引擎,本篇开始对其内置的标签做深入的讲解,如果你使用的是Smarty等第三方模板引擎,请忽略. 变量的输出我们已经在快速入门的变量输出中做了详细的描述,后面主要讲解变量的输出判断.循环和控制,以及包含公共模板和资源文件等. 包含公共模板 [-more-] include标签 使用include标签在当前模板中包含公共模板,例如常见的header和footer等公共模板,include标签最常用的属性是file,但是支持不同的用法,其用法基本和我们常

freemaker模板引擎使用详解

目录: 一.freemaker介绍 二.freemaker的使用 正文: 一.freemaker介绍 1.1FreeMarker概述:FreeMarker是一款模板引擎,即一种基于模板和要改变的数据,并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具. 1.2获得FreeMarker 官网:http://freemarker.org/ 中文帮助文档:https://sourceforge.net/projects/freemarker/files/chinese-manu

模板引擎ejs详解

singsingasong.js: const ejs=require('ejs'); ejs.renderFile('./views/singsingasong.ejs', {'name':'singsingasong',json: {arr: [ {user: 'blue', pass: '123456'}, {user: 'zhangsan', pass: '654321'}, {user: 'xiaoming', pass: '999999'}, ]}}, function (err,

cocos2d-x3.0 新的物理引擎之详解setCategoryBitmask()、setContactTestBitmask()、setCollisionBitmask()

转载请注明出处:游戏开发实验室http://blog.csdn.net/u010019717/article/details/32942641 我在编写游戏的时候遇到了这个问题,  物理引擎其他的内容还好理解,  就这三个函数就是没找到有人详细的解释一下.  我不知道这个都没弄明白,游戏是怎么做出来的.那我就不吐糟了,      下面的所有内容都是我的个人推断.不知道正不正确.    反正我目前是这么理解的. 我们先来看看这三个函数的定义: /** * A mask that defines w

oc中字典的实现方法详解

一:字典的基本概念 Foundation中的字典(NSDictionary,NSMutableDictionary)是由键-值对组成的数据集合.正如,我们在字典里查找单词的定义一样. 通过key(键),查找的对应的value(值),key通常是字符串对象,也可以是其他任意类型对象.在一个字典对象中,key的值必须是唯一的. 此外,字典对象的键和值不可以为空(nil),如果需要在字典中加入一个空值,可以加入NSNull对象 二:不可变字典-NSDictionary 1:初始化(以一个元素和多个元素

JDK中的Timer和TimerTask详解

目录结构: Timer和TimerTask 一个Timer调度的例子 如何终止Timer线程 关于cancle方式终止线程 反复执行一个任务 schedule VS. scheduleAtFixedRate 一些注意点 1. Timer和TimerTask Timer是jdk中提供的一个定时器工具,使用的时候会在主线程之外起一个单独的线程执行指定的计划任务,可以指定执行一次或者反复执行多次. TimerTask是一个实现了Runnable接口的抽象类,代表一个可以被Timer执行的任务. 2.