Jinja2学习

Posted szj666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jinja2学习相关的知识,希望对你有一定的参考价值。

模板: 知名模板引擎:jinja2(flask默认的模板引擎) Mako
template模板路径:
1.在渲染模板的时候,会默认从根目录下的templates目录下查找模板文件
2.也可以自定义模板路径,Flask类的构造函数中定义了模板路径参数,所以可以在Flask初始化的时候指定template_folder参数。

模板变量传参:
单个变量可直接放在render_templates()参数中
多个变量,可将参数变量 值放在一个字典中,
render_template()函数中加入**字典名即可

前端使用变量参数:
用来存放变量
% 用来执行函数或者逻辑代码 %
快捷键:Tab
开始标签 结束标签
jinja的for循环:
% for foo in list %
% if loop.first %
...
% endif %
% endfor %
其他loop方法:
loop.last loop.index0(当前迭代的索引,从0开始) loop.index,loop.length (序列的长度)
jinja2模板过滤器:
作用:对后台传到前台的参数进行数据处理
使用:通过管道符号变量名|过滤器名

常用过滤器:
默认值过滤器:1. 变量名|default(‘xxx‘,boolean=False)2.可以使用or来替代default 变量名 or ""

转义过滤器:jinja2自动转义默认成字符串,而不是html标签
使用过滤器:防止转义 块区域防止转义:
% autoescape off % % endautoescape%
单变量防止转义:
% 变量名|safe %
某个字符串进行进行转义:
escape

format过滤器:
"我的名字是 %s " |format("hello")

其他过滤器:
first last length join int lower replace( old,new) truncate(length=30)截取 striptags string wordcount()计算单词个数

自定义过滤器:
在后端定义函数:自定义函数,然后注册到jinja2模板当中
@app.template_filter(‘my_func‘)
def func(value):
value=xxx.x
return value


宏:
概念:模板中的宏和python中的函数类似,也可以传递参数,但不能有返回值,可以将经常用到的代码片段放到宏中,然后把不固定的值抽取出来当成一个变量参数

使用:参数可以为默认值
1.可放在本html问价中
2.也可以放在单独的tml文件中,将它导入 % from .宏文件名 import 宏 as %(导入宏文件,路径默认是在templates目录下查找)
变量值的自动传递:
导入宏的时候 若想把被导入宏的html文件的变量值自动传递到宏中,则导入时加入 with context

定义宏:
% macro input(name,value=‘‘,type=‘ value ‘ %
<input type="type" name=" name " value=" value ">
% endmacro %
使用宏:
<p> input(‘username‘) </p>
<p> input(‘password‘,type=‘text‘) </p>

jinja2的include标签:
1.这个标签相当于直接将模板中的代码复制粘贴到当前位置
2.“include"标签,如果想要使用父模板的变量,直接用就可以了,不需要context
3."include"的路径,直接从templates根目录下查找
set with 定义变量用法:在模板中,可以用set定义变量

以上是关于Jinja2学习的主要内容,如果未能解决你的问题,请参考以下文章

[RHCE学习笔记] ansible使用jinja2 生成hosts主机文件

Jinja2文档学习

SaltStack实战之配置管理-Jinja2模板

Jinja2学习笔记暨官方文档的翻译

[学习记录]jinja2模板语法

jinja2.exceptions.TemplateSyntaxError: 意外字符'&'