Jinja2常用模板语言(条件判断if,循环遍历for,过滤器)

python开发前后端不分离web项目的时候,前端通常使用jinja2模板语言。现在介绍一下jinja2模板语言的基本语法。

一、普通变量

变量表示
格式:{{ 变量名 }}

from flask import Flask
from flask import render_template

app = Flask(__name__)


@app.route('/strtest/')
def test():
    s = "Hello"
    return render_template('strtest.html', s=s)


if __name__ == "__main__":
    app.run(host='0.0.0.0', port=8888)
<body>
    <h1>flask</h1>
    <p>
        {{ s }}
    </p>
</body>

测试:
在这里插入图片描述

二、for循环控制

格式:

{% for item in list %}
	list不为空时执行语句
{% else %}
	list为空时执行默认语句
{% endfor %}

测试:

@app.route('/strtest/')
def test():
    l = []
    return render_template('strtest.html', l=l)
<h1>Flask</h1>
{% for item in l %}
    {{ item }}
{% else %}
    {{ 'ddddd' }}
{% endfor %}

在这里插入图片描述

三、if条件判断

格式:

{% if 条件1 %}
	语句块1
{% elif 条件2 %}
	语句块2
{% else %}
	不符合所有条件
{% endif %}

测试:

@app.route('/strtest/')
def test():
    l = ['sdfdad', 'asdf', 'sadfadsfdasdsf', 'sdfdsfdfdf']
    return render_template('strtest.html', l=l)
<body>
<h1>Flask</h1>
{% for item in l %}
    {% if item|length > 6 %}
        {{ item }} <br>
    {% elif item|length > 5 %}
        {{ 'www' }} <br>
    {% else %}
        {{ 'qqq' }} <br>
    {% endif %}
{% endfor %}
</body>

在这里插入图片描述

四、过滤器

过滤器可以对变量加以滤器修改。过滤器通过管道符号(|)与变量分隔,并且在括号中可以包含可选参数。一个变量可以链接多个过滤器。一个过滤器的输出可以应用于下一个过滤器。
官方过滤器api:http://jinja.pocoo.org/docs/2.10/templates/#builtin-filters
过滤器格式:{{ 变量|过滤器1|过滤器2|… }}

4.1 字符串过滤器

将’hello’转大写字母

{{ 'hello'|upper }}

将’hello’反转

{{ 'hello'|reverse }}

首字母大写

{{ 'hello'|title }}

首字母大写后反转

{{ 'hello'|title|reverse }}

常用过滤器列表
过滤器 说明
safe 禁止转义,渲染时不会转义特殊字符
capitallize 把首字母转大写,其他的字母转小写
lower 把所有的字母转小写
upper 把所有字母转大写
title 把每个单词的首字母转大写
trim 去掉首尾空格
striptags 去掉所有的HTML标签
join 将多个值拼接成字符串,类似python的join()函数
replace 替换字符串的值
round 对数字四舍五入
int 转换成int类型

4.2 列表过滤器

获取第一个元素

{{ list1|first }}

获取列表最后一个元素

{{ list1|last }}

列表排序

{{ list1|sort }}

列表求和

{{ list1|sum }}

求列表长度

{{ list1|length }}

4.3 自定义过滤器

自定义一个列表反转的过滤器

4.3.1 通过装饰器添加
@app.template_filter('listreverse')
def list_reverse(li: list):
    li.reverse()
    return li

测试:

@app.template_filter('listreverse')
def list_reverse(li: list):
    li.reverse()
    return li


@app.route('/strtest/')
def test():
    l = ['sdfdad', 'asdf', 'sadfadsfdasdsf', 'sdfdsfdfdf']
    return render_template('strtest.html', l=l)
<body>
<h1>Flask</h1>
{% for item in l|listreverse %}
    {{ item }} <br>
{% endfor %}
</body>

在这里插入图片描述

4.3.2 通过app实例添加
def list_reverse(li: list):
    li.reverse()
    return li

app.add_template_filter(list_reverse, 'lireverse')

测试:

from flask import Flask
from flask import render_template

app = Flask(__name__)


def list_reverse(li: list):
    li.reverse()
    return li


@app.route('/strtest/')
def test():
    l = ['sdfdad', 'asdf', 'sadfadsfdasdsf', 'sdfdsfdfdf']
    return render_template('strtest.html', l=l)


if __name__ == "__main__":
    app.add_template_filter(list_reverse, 'lireverse')
    app.run(host='0.0.0.0', port=8888)
<body>
<h1>Flask</h1>
{% for item in l|lireverse %}
    {{ item }} <br>
{% endfor %}
</body>

在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值