+ 我要发布
我发布的 我的标签 发现
浏览器扩展
斑点象@Edge

Flask jinja2模板for循环 | 码农家园

在jinja2中的for循环,跟python中的for循环基本上是一模一样的。也是for...in...的形式。并且也可以遍历所有的序列以及迭代器。但是唯一不同的是,jinja2中的for循环没有break和continue语句。 并且jinja2中的for循环还包含以下变量,可以用来获取当前的遍历状态 变量|描述 loop.index 当前迭代的索引(从1开始) loop.index0 当前迭代的索引(从e开始) 1oop.first 是否是第一次迭代,返回True或 False loop.last 是否是最后一次选代,返回True或 False 11op.length 序列的长度 from flask import Flask,render_template app = Flask(__name__) app.config['TEMPLATES_AUTO_RELOAD'] = True @app.route('/') def index(): context = { 'users':['捡猫1','捡猫2','捡猫3'], 'person': { 'username': '捡猫', 'age': 18, 'country': 'china' }, 'books':[ { 'name': '三国演义', 'author':'罗贯中', 'price': 110 },{ 'name': '西游记', 'author':'吴承恩', 'price': 109 },{ 'name': '红楼梦', 'author':'曹雪芹', 'price': 120 },{ 'name': '水浒传', 'author':'施耐庵', 'price': 119 } ] } return render_template('index.html',**context) if __name__ == '__main__': app.run(debug=True) HTML代码: <body> <ul> {% for user in users|reverse %} <li>{{ user }}</li> {% else %} <li>沒有任何值</li> {% endfor %} </ul> <table> <thead> <tr> <th>用户名</th> <th>年龄</th> <th>国家</th> </tr> </thead> <tbody> <tr> {% for key in person.keys() %} <td>{{ key }}</td> {% endfor %} </tr> </tbody> </table> <table> <thead> <tr> <th>序号</th> <th>书名</th> <th>作者</th> <th>价格</th> <th>总数</th> </tr> </thead> <tbody> {% for book in books %} {% if loop.first %} <tr style="background: red;"> {% elif loop.last %} <tr style="background: pink;"> {% else %} <tr> {% endif %} <td>{{ loop.index0 }}</td> <td>{{ book.name }}</td> <td>{{ book.author }}</td> <td>{{ book.price }}</td> <td>{{ loop.length }}</td> </tr> {% endfor %} </tbody> </table> <table border="1"> <tbody> {% for x in range(1,10) %} <tr> {% for y in range(1,10) if y <= x %} <td>{{ y }}*{{ x }}={{ x*y }}</td> {% endfor %} </tr> {% endfor %} </tbody> </table> </body>