- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
控制结构清单.pdf
控制结构清单
控制结构指的是所有的那些可以控制程序流的东西 —— 条件 (⽐如 if/elif/ekse )、
for 循环、以及宏和块 类的东西。控制结构在默认语法中以 {% .. %} 块的形式 出
现。
For
遍历序列中的每项。例如,要显⽰⼀个由 users` 变量提供的⽤户列表:
h1Members/h1
ul
{% for user in users %}
li{{ user.username |e }}/li
{% endfor %}
/ul
因为模板中的变量保留它们的对象属性,可以迭代像 dict 的容器:
dl
{% for key, value in my_dic .i eri ems() %}
d {{ key |e }}/d
dd{{ value |e }}/dd
{% endfor %}
/dl
注意⽆论如何字典通常是⽆序的,所以你可能需要把它作为⼀个已排序的列表传⼊ 到
模板或使⽤ dictsort 过滤器。
在⼀个 for 循环块中你可以访问这些特殊的变量:
变量 描述
loop .index 当前循环迭代的次数 (从 1 开始)
loop .index0 当前循环迭代的次数 (从 0 开始)
loop .revindex 到循环结束需要迭代的次数 (从 1 开始)
loop .revindex0 到循环结束需要迭代的次数 (从 0 开始)
loop .first 如果是第⼀次迭代,为 True 。
loop .last 如果是最后⼀次迭代,为 True 。
loop .length 序列中的项⽬数。
loop .c cle 在⼀串序列间期取值的辅助函数。见下⾯的解释。
在 for 循环中,可以使⽤特殊的 loop .c cle 辅助函数,伴随循环在⼀个字符串/变 量列
表中周期取值:
{% for row in rows %}
li class={{ loop.cycle(odd, even) }}{{ row }}/li
{% endfor %}
从 Jinj a 2.1 开始,⼀个额外的 c cle 辅助函数允许循环限定外的周期取值。 更多信息
请阅读 全局函数清单 。
与 P thon 中不同,模板中的循环内不能 break 或 continue 。但你可以在迭代 中过滤序
列来跳过项⽬。下⾯的例⼦中跳过了所有隐藏的⽤户:
{% for user in users if no user.hidden %}
li{{ user.username |e }}/li
{% endfor %}
好处是特殊的 loop 可以正确地计数,从⽽不计⼊未迭代过的⽤户。
如果因序列是空或者过滤移除了序列中的所有项⽬⽽没有执⾏循环,你可以使
⽤ else 渲染⼀个⽤于替换的块:
ul
{% for user in users %}
li{{ user.username |e }}/li
{% else %}
liemno users found/em/li
{% endfor %}
/ul
也可以递归地使⽤循环。当你处理诸如站点地图 类的递归数据时很有⽤。要递归地
使⽤循环,你只需要在循环定义中加上 recursive 修饰,并在你想使⽤递归的地 ⽅,
对可迭代量调⽤ loop 变量。
下⾯的例⼦⽤递归循环实现了站点地图:
ul class=si emap
{%- for i em in si emap recursive %}
lia href={{ i em.href|e }}{{ i em. i le }}/a
{%- if i em.children -%}
ul class=submenu{{ loop(i em.children) }}/ul
{%- endif %}/li
{%- endfor %}
/ul
If
Jinj a 中的 if 语句可⽐ P thon 中的 if 语句。在最简单的形式中,你可以测试 ⼀个变量
是否未定义,为空或 false:
{% if users %}
ul
{% for user in users %}
li{{ user.username |e }}/li
{% endfor %}
/ul
{% end
您可能关注的文档
最近下载
- 中小学校内部控制手册.pdf VIP
- Hilti喜利得防火胶泥材料安全数据表 CFS-P BA CP 618 CFS-D 1'' (ZH), 说明书用户手册.pdf
- 《园艺设施工程学》第1章园艺设施的发展现状与趋势.ppt
- 《拒绝校园欺凌》ppt课件(图文).pptx VIP
- 知识产权常年财务顾问合同.docx VIP
- 犯罪原因分析_性犯罪_强奸罪.pptx VIP
- SY∕T 5665-2018 钻井液用防塌封堵剂 改性沥青.pdf
- 儿童护牙知识课件.pptx VIP
- T CAAMTB 68—2022 自调整膜片弹簧离合器总成技术要求和台架试验方法.pdf VIP
- 地方院校药学专业应用型人才创新能力培养体系的构建.pdf VIP
文档评论(0)