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开发中广泛 ...
随机推荐
- K2 BPM_K2受邀出席SAP研讨会:共话“智能+”时代下的赋能与转型_全业务流程管理专家
3月5日,第十三届全国人大二次会议在北京召开.政府工作报告首次出现“智能+”,并明确指出2019年,要打造工业互联网平台,拓展“智能+”,为制造业转型升级赋能.从政府工作报告中不难看出,“智能+” ...
- linux环境下安装python3的方法(转)
Linux 安装python3.7.0 我这里使用的时centos7-mini,centos系统本身默认安装有python2.x,版本x根据不同版本系统有所不同,可通过 python --V 或 ...
- Image Processing and Computer Vision_Review:Recent Advances in Features Extraction and Description Algorithms: A Comprehensive Survey——2017.03
翻译 特征提取和描述算法的最新进展:全面的调查 摘要 - 计算机视觉是当今信息技术中最活跃的研究领域之一.让机器和机器人能够以视线的速度看到和理解周围的世界,创造出无穷无尽的潜在应用和机会.特征检测和 ...
- mmap:内存映射文件
介绍 建立一个文件的内存映射将使用操作系统虚拟内存来直接访问文件系统上的数据,而不是使用常规的I/O函数访问数据. 内存映射通常可以提高I/O性能,因为使用内存映射时,不需要对每一个访问都建立一个单独 ...
- GOLANG多态的特征是通过接口来实现的 GOLANG多态形式之一:多态参数
GOLANG多态的简单实现 //多态的特征是通过接口来实现的 //多态形式之一:多态参数 package main import( "fmt" _"sort" ...
- Mac环境下使用Appium Inspector进行元素定位
一.摘要 本篇博文介绍在Mac系统上使用AppiumI Inspector进行App页面元素定位 二.Finding elements by xpath WebElement digit_9 = dr ...
- 关于C++ Builder Codegurad 问题的排查。
关于C++ BUILDER6 我目前不知道有什么特别好的内存排查工具.尤其为了对付memory leak, (Eurekalog 这个工具内存泄漏主要针对delphi,BCB配置比较繁琐). 除了BC ...
- CSS基础学习 17.CSS动画
- python打开excel跳转对应分页
需求: 在python脚本层,直接打开excel,跳转特定分页,方便策划编辑 尝试了几种不同的方法,最终选择了方法4.4种方法都可以实现打开外部文件,3.4可以实现跳转特定分页.3和4的区别是,3通过 ...
- 解决document.getElementById("")在IE7中误读成name的bug
<!DOCTYPE html> <html lang="en"> <head> <meta char ...