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学习的更多相关文章
- Jinja2学习笔记暨官方文档的翻译
http://blog.csdn.net/lgg201/article/details/4647471 呵呵, 刚刚看完Python模板引擎Jinja2的文档, 感觉很好, 觉得动态语言真是很好. ...
- python-flask-ssti(模版注入漏洞)
SSTI(Server-Side Template Injection) 服务端模板注入 ,就是服务器模板中拼接了恶意用户输入导致各种漏洞.通过模板,Web应用可以把输入转换成特定的HTML文件或者e ...
- Html 前端jinjia2 & ajax
本章内容: jinja2 Ajax中的if语句 参考文档 html可以参照学习:w3school bootstrap学习:bootstrap 综合类学习网站:runoob jinja2学习网站:jin ...
- Flask基础全套
Flask简介 Flask是主流PythonWeb三大框架之一,其特点是短小精悍以及功能强大从而获得众多Pythoner的追捧,相比于Django它更加简单更易上手,Flask拥有非常强大的三方库,提 ...
- 最近在学习Flask框架,那么就说下jinja2吧~~~
jinja是组成Flask的模板引擎,先写一个demo吧 {% block body %} <ul> {% for user in users %} <li><a hre ...
- Python框架学习之Flask中的Jinja2模板
前面也提到过在Flask中最核心的两个组件是Werkzeug和Jinja2模板.其中Werkzeug在前一节已经详细说明了.现在这一节主要是来谈谈Jinja2模板. 一.为什么需要引入模板: 在进行软 ...
- CVE-2019-8341 Jinja2 RCE漏洞学习
漏洞简述 漏洞简介 Jinja2.10版本,Environment的实例方法from_string,存在RCE,该函数在内部实现逻辑中,存在exec函数去执行了,from_string函数参数中的ji ...
- Python模块学习 - jinja2
模板 要了解jinja2,那么需要先理解模板的概念.模板在Python的web开发中广泛使用,它能够有效的将业务逻辑和页面逻辑分开,使代码可读性增强.并且更加容易理解和维护. 模板简单来说就是一个其中 ...
- 【 Python】模块学习之Flask模板引擎:jinja2
原文链接:https://www.cnblogs.com/dachenzi/p/8242713.html 模板的概念 要了解jinja2,那么需要先理解模板的概念.模板在Python的web开发中广泛 ...
随机推荐
- 【opencv 源码剖析】 三、 morphOp 数学形态学滤波函数, 腐蚀和膨胀就是通过这个函数得到的
// //_kernel : 形态学滤波的核 //anchor: 锚点再滤波核的位置 //iterations: 迭代次数 static void morphOp( int op, InputArra ...
- vue网络不好时不间断请求
配置默认参数 const { apiConfig: { timeout, retry, retryDelay } } = config; if(timeout) axios.defaults.time ...
- ASE19团队项目alpha阶段model组 scrum6 记录
本次会议于11月8日,19时整在微软北京西二号楼sky garden召开,持续15分钟. 与会人员:Kun Yan, Lei Chai, Linfeng Qi, Xueqing Wu, Yutong ...
- 一 :了解MVC
介绍 1. ASP.NET WebForm和ASP.NET MVC是并行的关系.都是属于.NET框架下的子框架. 2. MVC项目常用模板 空模板 : 不包含MVC目录结构,需要自己添加. 基本模 ...
- 04_ Flume采集文件到HDFS案例
采集需求:比如业务系统使用log4j生成的日志,日志内容不断增加,需要把追加到日志文件中的数据实时采集到hdfs 根据需求,首先定义以下3大要素 采集源,即source——监控文件内容更新 : ex ...
- Caffe---Pycaffe 绘制loss和accuracy曲线
Caffe---Pycaffe 绘制loss和accuracy曲线 <Caffe自带工具包---绘制loss和accuracy曲线>:可以看出使用caffe自带的工具包绘制loss曲线和a ...
- C++获取文件夹下所有文件的路径
代码 getFiles()函数的作用: path是一个文件夹路径,函数在path文件夹下寻找所有文件(包括子文件夹下的文件),然后将所有文件的路径存入files #include <io.h&g ...
- Vue入门(三)——模拟网络请求加载本地数据
1.首先我们需要在webpack.dev.conf.js中const PORT = process.env.PORT && Number(process.env.PORT) 的后面追加 ...
- connect: network is unreachable
解决方法: 在确保完善网卡驱动,以及确保将网卡驱动编译进内核后,检查 ls /etc/sysconfig/network-script/ifcfg-eth0 一.看是否在上述目录下存在ifcfg-et ...
- TC做题笔记
SRM593 Div1Medium--May The Best Pet Win(bitset优化) Description 给出n个元素取值的max.min,把这n个元素分割成两个集合,求如何分割使两 ...