3.1.3、控制结构
Jinja2 提供了多种控制结构,可用来改变模板的渲染流程。本节使用简单的例子介绍其中
最有用的控制结构。
下面这个例子展示了如何在模板中使用条件控制语句:
{% if user %}
Hello, {{ user }}!
{% else %}
Hello, Stranger!
{% endif %}
另一种常见需求是在模板中渲染一组元素。下例展示了如何使用 for 循环实现这一需求:
<ul>
{% for comment in comments %}
<li>{{ comment }}</li>
{% endfor %}
</ul>
Jinja2 还支持宏。宏类似于 Python 代码中的函数。例如:
{% macro render_comment(comment) %}
<li>{{ comment }}</li>
{% endmacro %}
<ul>
{% for comment in comments %}
{{ render_comment(comment) }}
{% endfor %}
</ul>
为了重复使用宏,我们可以将其保存在单独的文件中,然后在需要使用的模板中导入:
{% import 'macros.html' as macros %}
<ul>
{% for comment in comments %}
{{ macros.render_comment(comment) }}
{% endfor %}
</ul>
需要在多处重复使用的模板代码片段可以写入单独的文件,再包含在所有模板中,以避免重复:
{% include 'common.html' %}
另一种重复使用代码的强大方式是模板继承,它类似于 Python 代码中的类继承。首先,创建一个名为 base.html 的基模板:
<html>
<head>
{% block head %}
<title>{% block title %}{% endblock %} - My Application</title>
{% endblock %}
</head>
<body>
{% block body %}
{% endblock %}
</body>
</html>
block 标签定义的元素可在衍生模板中修改。在本例中,我们定义了名为 head、title 和body 的块。注意,title 包含在 head 中。下面这个示例是基模板的衍生模板:
{% extends "base.html" %}
{% block title %}Index{% endblock %}
{% block head %}
{{ super() }}
<style>
</style>
{% endblock %}
{% block body %}
<h1>Hello, World!</h1>
{% endblock %}
extends 指令声明这个模板衍生自 base.html。在 extends 指令之后,基模板中的 3 个块被重新定义,模板引擎会将其插入适当的位置。注意新定义的 head 块,在基模板中其内容不是空的,所以使用 super() 获取原来的内容。
转载于:https://www.cnblogs.com/sanduzxcvbnm/p/6641164.html
3.1.3、控制结构相关推荐
- python控制结构实训_《python 从入门到精通》§5 控制结构
§5控制结构 2009-8-17 磁针石:xurongzhong#gmail.com §5.1关于print和import更多的东东 打印多个值: >>> print 'Age:', ...
- Python控制结构总结
-程序的控制结构共三种 顺序结构:程序按照线性顺序逐渐执行 分支结构:程序根据条件有选择的向程序运行方向执行 循环结构:程序根据一定条件在运行之后返回执行 一.分支结构 单分支结构 if <条件 ...
- 就是个控制结构,Scala 能有什么新花样呢?
作者 | luanhz 来源 | 小数志 导读 编程语言中最为基础的一个概念是控制结构,几乎任何代码都无时无刻不涉及到,其实也就无外乎3种:顺序.分支和循环.本文就来介绍Scala中控制结构,主要是分 ...
- R语言笔记5:控制结构
R语言基础系列前情提要: 1数据类型(向量.数组.矩阵. 列表和数据框) 2读写数据所需的主要函数.与外部环境交互 3数据筛选--提取对象的子集 4:向量.矩阵的数学运算 Control Struct ...
- (6)javascript的程序控制结构及语句-----(1)条件判断
程序控制结构及语句 编程就是将现实应用,转换为程序能够读得懂的语法语句.Javascript编程中对程序流程控制主要是通过条件判断语句.循环控制语句及continue.break来完成的,其中条件判断 ...
- Java语言的循环控制结构
Java语言的循环控制结构 循环控制结构:是在一定条件下,反复执行某段程序的流程结构,被反复执行的程序称为循环体.循环控制结构是程序中非常重要和基本的一种结构,它是由循环语句来实现的. Java 的循 ...
- c语言是非结构化程序设计语言,第章_结构化程序设计基础和C语言的控制结构(fb).ppt...
第章_结构化程序设计基础和C语言的控制结构(fb).ppt 2.4.2 continue语句 例2-24 编程序实现功能:检测从键盘上输入的以换行符结束的字符流,统计非字母字符的个数. 分析:通过循环 ...
- (008) java后台开发之java程序中的控制结构
转自:https://course.tianmaying.com/java-basic+control-flow# 博客应用综合实例 接下来我们来设计一下博客应用,让它可以管理博客. 用户可以输入以下 ...
- 循环控制结构程序05 - 零基础入门学习C语言20
第五章:循环控制结构程序05 让编程改变世界 Change the world by program break和continue语句 break语句 break语句可以用来从循环体内跳出循环体,即提 ...
- python控制结构是_Python之控制结构(if、while、for)
控制结构就是指顺序结构.分支结构.循环结构. 一.顺序结构 这是一种最简单的程序结构,程序按语句的书写次序自上而下顺序执行. 例如:给出圆的半径,求圆的周长和面积. 源程序: >>> ...
最新文章
- AI芯片:从历史看未来
- Ubuntu 上安装rust
- 为什么(#39;b#39;+#39;a#39;+ +#39;a#39;+#39;a#39;)。toLowerCase()#39;banana#39;的结果?
- 成功解决TypeError: read_excel() got an unexpected keyword argument ‘parse_cols or ‘sheetname‘
- pycharm matplotlib.pyplot.figure().add_subplot()绘制三维图时报错:ValueError: Unknown projection 3d(bug)
- 大四生活总结20101015
- Canvas 渐变特效
- linux重定向文件被修改后,Linux服务器修改.htaccess文件实现301重定向
- 面向对象程序设计要考虑的7个原则
- Vmware和Citrix各自发展史
- 《SEO的艺术(原书第2版)》——3.11 为意识形态影响力开展SEO
- 后端根据查询条件生成excel文件返回给前端,vue进行下载
- 流畅的python 数据模型
- 终于升级?89年的Linux内核C语言“跟上时代”转成现代C
- 一线大厂都在跑的微服务,真有这么香吗?
- 【病毒分析】——熊猫烧香 专杀工具C源码
- 挑战程序设计竞赛:三角形
- weblogic部署项目后内存溢出
- unity c#斗地主算法计算牌型
- Python2—0704笔记
热门文章
- 快速线性筛法求素数一般筛法求素数代码
- python 自动执行 apdl_在高效的mann中从Python运行ANSYS Mechanical APDL
- python递归实例_Python函数递归(带实例演示)
- 【PAT】A-1076:Forwards on Weibo(有向图的BFS遍历)
- windows与linux线程,Linux和Windows两种风格的操作系统,创建线程的方式有何不同?...
- 容器技术Docker K8s 4 容器编排技术基础-Kubernetes
- 极客大学架构师训练营 加密技术 高可用系统的度量 高可用系统的架构 高可用系统的运维 第22课 听课总结
- io vivado 怎么查看ps_一次诡异的磁盘IO使用率高排查
- 多头注意力比单头好在哪?
- 3.1 广义线性模型 And XGBoost