Jinja2模板基本语法
当下学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, EnvironmenttemplateLoader=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>
参考
- 百度百科:Jinja2
- https://www.cnblogs.com/dachenzi/p/8242713.html
Jinja2模板基本语法相关推荐
- Jinja2模板引擎语法
模板案例 eg: <!doctype html> <title>Hello template</title> {% if name %}<h1>Hell ...
- flask基础之jinja2模板-语法定义
懂得MVC的人都知道,模型.视图.控制,下面要要介绍的jinja就是视图层的一个渲染模板,类似于jsp,下面来学习 一.jinja2基本语法 jinja2模板可以保存在任何基于文本的文件中,比如XML ...
- ansible之when条件语法、处理任务失败、jinja2模板和项目管理
目录 一.item---loop 1.给定数据如下: 使用loop来输出 My name is zhangsan/lisi My age is 18/20 2.给定数据Services,要求使用loo ...
- Django模板之jinja2模板和CSRF
二.Django使用jinja2模板 2.1 jinja2介绍 Jinja2:是 Python 下一个被广泛应用的模板引擎,是由Python实现的模板语言,他的设计思想来源于 Django 的模板引擎 ...
- Python之 jinja2模板浅析
目录 前言 1. jinja2介绍 1.1 jinja2的优点 1.2 安装jinja2 2. jinja2语法 2.1 基本语法 2.2 jinja2变量 2.3 jinja2中的过滤器 3. ji ...
- 【Flask】Jinja2模板的使用及控制语句
Jinja2模板 在前面的实例中,视图函数的主要作用是生成请求的响应,这是最简单请求.实际上,视图函数有两个作用: 处理业务逻辑 返回响应内容 在大型应用中,把业务逻辑和表现内容放在一起,会增加代码的 ...
- Django配置开发环境和生产环境以及配置Jinja2模板引擎
配置开发环境 在项目的目录(即就是settings.py的同级目录)创建settings的Python的包 在创建的settings的包中,创建dev.py,将原项目的setting.py中内容全部复 ...
- Flask mysql 模版传参_Flask渲染Jinja2模板和传参
### Flask渲染Jinja2模板和传参: 1. 如何渲染模板: * 模板放在`templates`文件夹下 * 从`flask`中导入`render_template`函数. * 在视图函数中, ...
- Web框架——Flask系列之Jinja2模板引擎(二)
Jinja2模板引擎简介 一.Jinja2模板概述 用来展示数据的html页面,这个过程也通常称为渲染,属于Jinja2的功能 使用模板的好处: 视图函数只负责业务逻辑和数据处理(业务逻辑方面) 而模 ...
最新文章
- ssm 上传图片到mysql_ssm(Spring+Spring MVC+MyBatis)+Web Uploader开发图片文件上传实例,支持批量上传,拖拽上传,复制粘贴上传...
- pythonurllib模块-python爬虫之urllib模块和requests模块学习
- 浙江大学 计算机学院 秦青青,我院研究生在乒乓球大赛中喜获佳绩
- Android 去除标题栏和状态栏的方法
- 费诺码设计matlab,费诺编码的matlab实现.doc
- DropDMG for Mac(dmg打包软件)
- 小程序素材抓取软件_小程序上新丨2020冬季产品图库更新,海量素材随你用!...
- 复杂网络MATLAB工具箱
- 微信小程序的开发流程有哪些?
- 内网渗透-信息收集整合
- python中国大学慕课平台_乐学Python,中国大学MOOC(慕课)答案公众号搜题
- 基于JAVA毕业生交流学习平台计算机毕业设计源码+系统+数据库+lw文档+部署
- python语言实现读取菜谱_通过Python语言实现美团美食商家数据抓取
- 日常运维工作的知识体系
- Web全栈~25.文件
- Unity 应用的消息推送《一》本地推送
- 微软专家教你,如何搞定树莓派 AI 服务开发
- 计算机图形学课程设计html源码,孔令德的计算机图形学实验及课程设计(VC++版)...
- H3C交换机的命名规则
- 溢折价摊销的实际利率法