当下学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>
参考
  1. 百度百科:Jinja2
  2. https://www.cnblogs.com/dachenzi/p/8242713.html

Jinja2模板基本语法相关推荐

  1. Jinja2模板引擎语法

    模板案例 eg: <!doctype html> <title>Hello template</title> {% if name %}<h1>Hell ...

  2. flask基础之jinja2模板-语法定义

    懂得MVC的人都知道,模型.视图.控制,下面要要介绍的jinja就是视图层的一个渲染模板,类似于jsp,下面来学习 一.jinja2基本语法 jinja2模板可以保存在任何基于文本的文件中,比如XML ...

  3. ansible之when条件语法、处理任务失败、jinja2模板和项目管理

    目录 一.item---loop 1.给定数据如下: 使用loop来输出 My name is zhangsan/lisi My age is 18/20 2.给定数据Services,要求使用loo ...

  4. Django模板之jinja2模板和CSRF

    二.Django使用jinja2模板 2.1 jinja2介绍 Jinja2:是 Python 下一个被广泛应用的模板引擎,是由Python实现的模板语言,他的设计思想来源于 Django 的模板引擎 ...

  5. Python之 jinja2模板浅析

    目录 前言 1. jinja2介绍 1.1 jinja2的优点 1.2 安装jinja2 2. jinja2语法 2.1 基本语法 2.2 jinja2变量 2.3 jinja2中的过滤器 3. ji ...

  6. 【Flask】Jinja2模板的使用及控制语句

    Jinja2模板 在前面的实例中,视图函数的主要作用是生成请求的响应,这是最简单请求.实际上,视图函数有两个作用: 处理业务逻辑 返回响应内容 在大型应用中,把业务逻辑和表现内容放在一起,会增加代码的 ...

  7. Django配置开发环境和生产环境以及配置Jinja2模板引擎

    配置开发环境 在项目的目录(即就是settings.py的同级目录)创建settings的Python的包 在创建的settings的包中,创建dev.py,将原项目的setting.py中内容全部复 ...

  8. Flask mysql 模版传参_Flask渲染Jinja2模板和传参

    ### Flask渲染Jinja2模板和传参: 1. 如何渲染模板: * 模板放在`templates`文件夹下 * 从`flask`中导入`render_template`函数. * 在视图函数中, ...

  9. Web框架——Flask系列之Jinja2模板引擎(二)

    Jinja2模板引擎简介 一.Jinja2模板概述 用来展示数据的html页面,这个过程也通常称为渲染,属于Jinja2的功能 使用模板的好处: 视图函数只负责业务逻辑和数据处理(业务逻辑方面) 而模 ...

最新文章

  1. ssm 上传图片到mysql_ssm(Spring+Spring MVC+MyBatis)+Web Uploader开发图片文件上传实例,支持批量上传,拖拽上传,复制粘贴上传...
  2. pythonurllib模块-python爬虫之urllib模块和requests模块学习
  3. 浙江大学 计算机学院 秦青青,我院研究生在乒乓球大赛中喜获佳绩
  4. Android 去除标题栏和状态栏的方法
  5. 费诺码设计matlab,费诺编码的matlab实现.doc
  6. DropDMG for Mac(dmg打包软件)
  7. 小程序素材抓取软件_小程序上新丨2020冬季产品图库更新,海量素材随你用!...
  8. 复杂网络MATLAB工具箱
  9. 微信小程序的开发流程有哪些?
  10. 内网渗透-信息收集整合
  11. python中国大学慕课平台_乐学Python,中国大学MOOC(慕课)答案公众号搜题
  12. 基于JAVA毕业生交流学习平台计算机毕业设计源码+系统+数据库+lw文档+部署
  13. python语言实现读取菜谱_通过Python语言实现美团美食商家数据抓取
  14. 日常运维工作的知识体系
  15. Web全栈~25.文件
  16. Unity 应用的消息推送《一》本地推送
  17. 微软专家教你,如何搞定树莓派 AI 服务开发
  18. 计算机图形学课程设计html源码,孔令德的计算机图形学实验及课程设计(VC++版)...
  19. H3C交换机的命名规则
  20. 溢折价摊销的实际利率法

热门文章

  1. python能开发智能家居吗_厉害了!Python竟然可以做智能家居温湿度报警系统
  2. [生存志] 第125节 针道针具取穴
  3. H3C 防火墙安全域基本配置
  4. 【王老师说运维】:高级运维开发工程师在线评测
  5. 不同进制的类型与转换
  6. android 浏览器夜间模式
  7. html5网页播放声音
  8. 高防IP与高防服务器的区别
  9. 抽象代数之pq阶群的结构其中q能整除p-1
  10. fullpage实例