jinja2模板用法详解
目录
- 渲染模板
- 语法
- 过滤器
- 代码复用
- 特有变量及函数
渲染模板
用法:render_template(⽂件名,key=value)
模板文件一般默认路径为/templates下的文件,可通过key=value的方式往模板文件中传递参数,模板中使用{{key}}的方式获取参数。
例:
@app.route("/")
def index():........return render_template("index.html")
语法
获取变量:{{变量}}
if条件语句:{%if条件%}语句{%else%}语句{%endif%}
for循环:{%for 变量 in 容器%}语句{%endfor%}
for循环中特殊变量
变量 | 描述 |
---|---|
loop.index | 当前循环迭代的次数(从 1 开始) |
loop.index0 | 当前循环迭代的次数(从 0 开始) |
loop.revindex | 到循环结束需要迭代的次数(从 1 开始) |
loop.revindex0 | 到循环结束需要迭代的次数(从 0 开始) |
loop.first | 如果是第一次迭代,为 True 。 |
loop.last | 如果是最后一次迭代,为 True 。 |
loop.length | 序列中的项目数。 |
loop.cycle | 在一串序列间期取值的辅助函数。见下面示例程序。 |
过滤器
1.系统自带过滤器:
字符串过滤器:
使用格式:{{字符串|过滤器}}
过滤器 | 描述 |
---|---|
safe | 禁用转义 |
capitalize | 首字母大写,其余小写 |
lower | 转换为小写 |
upper | 转换为大写 |
title | 每个单词首字母大写,其余小写 |
reverse | 字符串反转 |
format | 格式化输出 |
striptags | 把HTML标签删掉 |
列表过滤器:
使用格式:{{列表|过滤器}}
过滤器 | 描述 |
---|---|
first | 取第一个元素 |
last | 取最后一个元素 |
length | 获取列表长度 |
sum | 列表求和 |
sort | 列表排序 |
语句块操作:
{% filter upper %}#一大堆文字#
{% endfilter %}
链式调用:
{{ "hello world" | reverse | upper }}
2.自定义过滤器:
直接添加到过滤器列表:
def do_listreverse(li):# 通过原列表创建一个新列表temp_li = list(li)# 将新列表进行返转temp_li.reverse()return temp_liapp.add_template_filter(do_listreverse,'lireverse')
使用装饰器添加:
@app.template_filter('lireverse')
def do_listreverse(li):# 通过原列表创建一个新列表temp_li = list(li)# 将新列表进行返转temp_li.reverse()return temp_li
代码复用
1.宏(macro):
(1)定义格式:{% macro 宏名(参数) %} {%endmacro%}
(2)使用格式:
当前文件:使⽤当前⽂件宏: {{ 宏名(参数) }}
其他文件:{% import ‘宏⽂件名’ as 别名%} {{ 别名.宏名(参数) }}
2.继承(extends):
(1)特点: 共性抽取, 代码复⽤
(2)格式: {% extends ‘⽗⽂件名’%}
(3)注意点:
父类:父类与子类可能不同的地方用block代码块写,方便子类重写
子类:可根据需求重写父类block代码块,可使用{{super()}}调用父类block内容
3.包含(include):
(1)特点:将⼀个⽂件的内容,完全拷⻉到另外⼀个⽂件中,不够灵活
(2)格式: {% include ‘⽂件名’ ignore missing%},ignore missing可不写,但是找不到目标文件会报错
特有变量及函数
1.特点: 不需要重flask程序⾥⾯,传递到模板就可以直接使⽤的
2.特殊变量及函数:
特殊变量/函数 | 描述 |
---|---|
config | app的配置对象,和flask⾥⾯的app.config是⼀回事 |
request | 请求对象 |
g | 应⽤上下⽂对象 |
url_for() | 通过函数名,解析到所对应的路径 |
get_flashed_messages() | 消耗, flash()⽅法⾥⾯存储的信息 |
flash存储数据的时候,⽤到了session所以需要设置SECRET_KEY
jinja2模板用法详解相关推荐
- PHP如何把三张图片均匀分布,C++ uniform_real_distribution连续均匀分布类模板用法详解...
uniform_real_distribution 类模板定义了一个默认返回 double 型浮点值的连续分布.可以按如下方式生成一个返回值在范围 [0,10) 内的分布对象: std::unifor ...
- matlab中duration是什么意思,C++ duration(STL duration)模板用法详解
duration (持续时间) 是定义为时间刻度数的时间间隔,可以指定一个时间刻度是多少秒.因此,时间刻度是衡量时间长短的基础.duration 模板的实例类型的对象定义了 duration.时间刻度 ...
- spring boot模板引擎thymleaf用法详解
spring boot模板引擎thymleaf用法详解 Spring-boot支持FreeMarker.Thymeleaf.jsp.veocity 但是对freemarker和thymeleaf的支持 ...
- php theme_path,PHP_Yii2主题(Theme)用法详解,本文实例讲述了Yii2主题(Theme) - phpStudy
Yii2主题(Theme)用法详解 本文实例讲述了Yii2主题(Theme)用法.分享给大家供大家参考,具体如下: 首先看看主要的配置方式: 'components' => [ 'view' = ...
- python中tile的用法_python3中numpy函数tile的用法详解
tile函数位于python模块 numpy.lib.shape_base中,他的功能是重复某个数组.比如tile(A,n),功能是将数组A重复n次,构成一个新的数组,我们还是使用具体的例子来说明问题 ...
- python定义类object_Python之ClassObject用法详解
类和对象的概念很难去用简明的文字描述清楚.从知乎上面的一个回答中可以尝试去理解: 对象:对象是类的一个实例(对象不是找个女朋友),有状态和行为.例如,一条狗是一个对象,它的状态有:颜色.名字.品种:行 ...
- fileinput 时间_JavaScript_Bootstrap Fileinput文件上传组件用法详解,最近时间空余,总结了一些关...
最近时间空余,总结了一些关于bootstrap fileinput组件的一些常见用法,特此分享到phpstudy平台,供大家参考,同时也方便以后的查找.本文写的不好还请见谅. 一.效果展示 1.原始的 ...
- STL中map和string, vector 用法详解
1. map 用法详解 std map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成 ...
- C++/C--unordered_map常见用法详解
文章目录 1. std::unordered_map 的定义与特性 2. 构造 std::unordered_map 3. 赋值操作 4. 迭代器操作 4.1 指向整个容器中的元素 4.2 指向某个桶 ...
最新文章
- 会开了一天,赛题有结果了吗?
- linux下防DDOS***软件及使用方法详解
- 【图论】Tree之最小方差树(bzoj 3754)
- b站在线解析_这款游戏被全B站所唾弃,每个月却依然有5000万玩家坚持在线?!...
- dbms数据库管理系统_数据库管理系统(DBMS)中的视图
- python 描述符参考文档_python 描述符详解
- 3种方法快速制作tpk文件
- centos7修改网卡名称为eth0
- 【图神经网络】 漫谈图神经网络 (一)
- Java之美[从蛮荒到撬动地球]之设计模式二
- 如何制作WindowsPE启动盘(极简)
- spring cloud 实现服务不间断
- iOS比较常用的第三方及实例(不断更新中)
- 基尔霍夫定律的验证与multisim仿真(附工程文件)
- 超值得入手的无线蓝牙耳机,四款性价比最高的蓝牙耳机品牌推荐
- wallpaper动态壁纸软件
- mysql 配置环境变量的方法及作用
- 什么是体系认证,企业进行认证有何意义?
- ps写php,ps毛笔字体怎么做
- 关于IDFA、CAID和「5. 1.2 - Data use sharing」