Jinja2模板基本语法
Jinja2是基于python的模板引擎,是Flask作者开发的一个模板系统。起初是仿django模板的一个模板引擎,为Flask提供模板支持,由于其灵活,快速和安全等优点被广泛使用。
·
当下学Jinja2的语法只是为了能展示网页,所以这里只介绍其基本语法。后续若有更高需求,会持续补充
Jinja2是基于python的模板引擎,是Flask作者开发的一个模板系统。起初是仿django模板的一个模板引擎,为Flask提供模板支持,由于其灵活,快速和安全等优点被广泛使用。
1.变量的使用
当外部应用需要把变量传递到模板中时,可以使用{{ }}。它是一种特殊的占位符,是打印语句的一部分。当进行渲染的时候,它会把这些特殊的占位符进行填充/替换,jinja2支持python的所有数据类型。假设模板文件如下:
test_jinja.html文件
<html lang="en">
<head>
<title>My Webpage</title>
</head>
<body>
<p>This is {{name}}, He is {{age}} years old</p>
<p>This is {{user['name']}}, He is {{user['age']}} years old</p>
<p>This is {{user_list[0]}}, He is {{user_list[1]+10}} years old</p>
</body>
</html>
注意,{{}}中支持基本的加减乘除和逻辑运算。使用Jinja2进行渲染,具体代码如下:
from jinja2 import loaders, FileSystemLoader, Environment
# 指定模板文件搜索的开始位置
templateLoader=FileSystemLoader(searchpath="./",encoding='utf-8')
templateEnv=Environment(loader=templateLoader)
# 这里的文件位置是以searchpath做为基准的,而不是当前文件夹.
template=templateEnv.get_template("./test_jinja.html")
html=template.render(name='James',age=30,user={'name':'Mark','age':40},
user_list=['Make',35])#输入参数
则渲染之后的html代码如下:
<html lang="en">
<head>
<title>My Webpage</title>
</head>
<body>
<p>This is James, He is 30 years old</p>
<p>This is Mark, He is 40 years old</p>
<p>This is Make, He is 45 years old</p>
</body>
</html>
从上述实验结果中还可以发现,{{}}中的内容是可以计算的(第三个p标签)。
2. 控制结构
2.1 if条件控制
Jinja2中的if条件判断语句必须放在{% if statement %}中间,并且还必须有结束的标签{% endif %}。假设模板文件如下 :
<html lang="en">
<head>
<title>My Webpage</title>
</head>
<body>
{% if score>=90 %} <p>优秀</p>
{% elif score>=80 %} <p>良好</p>
{% elif score>=60 %} <p>及格</p>
{% else %} </p>不及格</p>
{% endif %}
</body>
</html>
这里要注意,控制语句用的是单个花括号。使用Jinja2进行渲染,具体代码如下:
from jinja2 import loaders, FileSystemLoader, Environment
templateLoader=FileSystemLoader(searchpath="./",encoding='utf-8')
templateEnv=Environment(loader=templateLoader)
template=templateEnv.get_template("./test_jinja.html")
html=template.render(score=89)#渲染后的html代码
渲染之后的html代码如下:
<html lang="en">
<head>
<title>My Webpage</title>
</head>
<body>
<p>良好</p>
</body>
</html>
2.2 for循环
Jinja2中的for循环语句必须放在{% for statement %}中间,并且还必须有结束的标签{% endfor %}。假设模板文件如下 :
<html lang="en">
<head>
<title>My Webpage</title>
</head>
<body>
{% for item in users %}
<p>{{item[0]}}'s score is {{item[1]}}.</p>
{% endfor %}
</body>
</html>
使用Jinja2进行渲染,具体代码如下:
from jinja2 import loaders, FileSystemLoader, Environment
templateLoader=FileSystemLoader(searchpath="./",encoding='utf-8')
templateEnv=Environment(loader=templateLoader)
template=templateEnv.get_template("./test_jinja.html")
html=template.render(users=[['Lucy',79],['Tina',84],['Tom',75]])
则渲染后的html代码如下:
<html lang="en">
<head>
<title>My Webpage</title>
</head>
<body>
<p>Lucy's score is 79.</p>
<p>Tina's score is 84.</p>
<p>Tom's score is 75.</p>
</body>
</html>
参考
更多推荐
已为社区贡献8条内容
所有评论(0)