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开发中广泛 ...
随机推荐
- 【原创】大叔经验分享(82)logstash一个实例运行多个配置文件
logstash一个实例运行多个配置文件,将所有配置文件放到以下目录即可 /usr/share/logstash/pipeline 但是默认行为不是每个配置文件独立运行,而是作为一个整体,每个inpu ...
- 为什么有了uwsgi还要nginx这个“前端”服务器
相信每一个使用nginx+uwsgi+django部署过的人,都感到非常复杂.到底为什么一个项目的发布要经过这么多层级,他们每一层有什么理由存在?这就带大家宏观地看待一下 首先nginx 是对外的服务 ...
- 第五章、Django之模型层---单表操作
目录 第五章.Django之模型层---单表操作 一.ORM查询 二.Django测试环境搭建 三.单表查询 1. 增 2. 改 3. 删 4. 查 第五章.Django之模型层---单表操作 一.O ...
- MySQL备份--xtrabackup与mysqldump工具使用
MySQL备份----xtrabackup与mysqldump工具的使用 一.Xtrabackup8.0: 一个用于MySQL数据库物理热备的备份工具,支持MySQL.Percona server和M ...
- HTML5常用的语义化标签
快速查询 article | aside | nav | section | header | footer 架构预览 nav 定义导航链接的部分 在页脚显示一个站点的导航链接,如首页.服务信息页面. ...
- delphi xe5 fastreport4.14 中文很多时换行不正确
用一般的frxMEMOview 中文换行是瞎换,缺少数据,换成frxrichview 即可, frxrichview 使用注意点 1).Delphi中文很多时换行不正确 2).要在窗体上拖一个frxr ...
- BZOJ2208 [Jsoi2010]连通数[缩点/Floyd传递闭包+bitset优化]
显然并不能直接dfs,因为$m$会非常大,复杂度就是$O(mn)$: 这题有三种做法,都用到了bitset的优化.第二种算是一个意外的收获,之前没想到竟然还有这种神仙操作.. 方法一:缩点+DAG上b ...
- vulkan 的icb
https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/chap30.html#device-generated-comma ...
- springboot项目下载文件功能中-切面-导致的下载文件失败的bug
背景:使用spring提供的 ResponseEntity 和Resource结合,实现的下载文件功能 bug:Resource已经加载到了文件, 并且通过 ResponseEntity 构建了响应, ...
- binlog2sql闪回工具的使用
binlog2sql闪回工具的使用 一.下载安装依赖的python yum install openssl-devel bzip2-devel expat-devel gdbm-devel readl ...