• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

Yancy00

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

flask-内置过滤器

数学相关:

abs求绝对值
int转为整型
float 转为浮点型
filesizeformat转为好看的文件大小格式
max 求序列中最大值
min 求序列中最小值
random 返回管道符'|'左边的这个序列中,随机一个元素

字符串相关

default 设置默认值
escape 将一些特殊字符转义
format 格式化字符串
string 转为字符串
lower 全部转为小写
upper 全部转为大写
striptags 将字符串中的html标签都去除.只保留文本内容
tojson 转为JSON格式字符串
trim 去除前后空白字符
truncate 截取指定长度
wordcount 统计有多少个单词

序列相关

join 根据参数指定的间隔符,将序列中的元素拼接起来
first返回序列的第一个元素
last 返回序列的最后一个元素
length 序列元素的个数.即序列的长度
list 将'|'左侧值转为一个列表
unique 将序列中的重复元素去除

功能函数

map 将'|'左侧序列中每个元素都执行 某个函数
groupby 将'|'左侧序列,按指定字段分组
reject 将'|'左侧序列按条件过滤
rejectattr 将'|'左侧序列按某个属性进行过滤
replace 将'|'左侧字符串中的指定字符替换为新字符
reverse 将'|'左侧序列逆序排列
safe 将'|'左侧字符串去掉全局转义. 就可以直接当html元素展示在页面上.
select 从'|'左侧序列 选择满足条件的元素
selectattr 从'|'左侧序列 选择含有某个属性的元素
sort 将'|'左侧序列排序
urlencode 不知道
urlize 将字符串变为可以点击的链接

备注

  1. 过滤器可以链式调用:
    示例: {{value|stim|wordcount}}从左到右按顺序执行
    value先去除左右的空白字符.然后再求单词个数.

  2. 参数可以是从后端视图函数返回时的 render_template()传过来的参数.
    也可以在html模板页面中直接定义变量.

{% set b=10240000 %}
<div>b={{b}}</div>
<div> filesizeformat 格式化成方便阅读的单位:{{ b|filesizeformat }}</div>

示例:

数学相关,字符串相关过滤器 使用示例
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        body {
            height: 3000px;
        }

        ul > li > span:before {
            content: '示例: '

        }

        ul > li > span {
            color: dodgerblue;
        }

        ul > li > span > div:before {
            content: '备注: ';
        }

        ul > li div {
            color: orangered;
        }
    </style>
</head>
<body>
<!--定义变量-->
{% set temperature_yesterday=-10 %}
{% set temperature_tody=2 %}
{% set temperature_tomorrow='12' %}
{% set pi='3.1415926' %}
{% set score=[10,12,76,0,35,88] %}
{% set filesize=10240008 %}
{% set names=['张三','李狗蛋','王大锤'] %}
{% set ages=(12,20,32,2) %}
{% set username='李狗蛋' %}
{% set str1='>' %}
{% set greeting='热烈欢迎,市领导' %}
{% set htmlStr1='''
<div>
    <h1 style="color:yellow;">
        <span>你好啊</span>
    </h1>
</div>
''' %}

{% set userInfo={'name':'zhang3', 'age':22, 'job':'programer',} %}
{% set str2='nice to meet you.' %}


<!--用过滤器显示-->
<div>
    <ul>
        <b>数学相关:</b>
        <li> abs求绝对值:<span>昨天气温:零下{{ temperature_yesterday|abs }}°</span>
        </li>
        <li>int转为整形: <span>明天气温: {{temperature_tomorrow|int}}°
            <div>value|int(default=0,base=10).<br>第一个参数:如果类型转换失败,要返回的默认值<br>
            第二个参数是按照什么进制转换.默认按10进制转换.
            </div>
        </span></li>
        <li>float转为浮点: <span>pi=:{{pi|float}}
            <div>value|float(默认值0.0)</div>
        </span></li>
        <li> filesizeformat用容易阅读的方式显示文件大小:<span> {{filesize|filesizeformat}}
        <div> value|filesizeformat(binary=False)
            参数binary默认为False.默认单位是M,G... 若binary=True则按1024倍数换算</div>
        </span></li>
        <li>max,min求出最大,最小值: <span>最大年龄{{ages|max}},最小年龄:{{ages|min}}</span></li>
        <li>random从序列中随机获取一个元素: <span>{{names|random}},请回答问题</span></li>
    </ul>
    <hr>

    <ul>
        <b>字符串相关:</b>
        <li>default设置默认值:
            <span>{{abc|default('未知的')}}</span>
            <span>{{''|default('空白',boolean=True)}}
            <div>value|default(boolean=False) <br>
                参数boolean默认为False,表示如果value未定义就使用指定的默认值 <br>
                参数boolean若设置为True,表示如果value是空值就使用指定的默认值</div>
        </span>
        </li>
        <li>escape 将特殊字符转义:
            <span>显示一个大于号:{{ str1|escape }}
            <div>JinJa2默认开启了全局转义.所以一般无序手动调用escape转义.<br>
                只有在关闭了全局转义.但是又想对特殊字符进行转义显示.才调用过滤器escape
            </div>
        </span>
        </li>
        <li>format按指定格式显示字符串:
            <span>{{"%s:%s莅临指导!"|format(greeting,username)}}
            <div>value|format(*args,**kwargs)</div>
        </span>
        </li>
        <li>string转为字符串:
            <span>piStr='{{pi|string}}'</span>
        </li>
        <li>lower字符串中字符全转小写,upper全转大写:
            <span>{{'JHON'|lower}},{{'db_Name'|upper}}</span>
        </li>
        <li>striptags 将字符串中的html元素都剔除只保留文本内容:
            <span> {{htmlStr1|striptags}}</span>
        </li>
        <li>tojson 将字典转为JSON格式字符串:
            <span>{{ userInfo|tojson }}
            <div>将python格式的字典{{userInfo}}转换json格式的字符串.</div>
        </span>
        </li>
        <li>trim 去除前后空白字符:
            <span>{{ "  abc def,aaaaa     "|trim }} </span>
        </li>
        <li>truncate 截取指定长度:
            <span>{{'你好,中国!欢迎来到中国旅游.'|truncate(length=3,killwords=True,end='.') }}
                <div>value|truncate(length=255,killwords=False,end='...') <br>
                    参数length:表示保留多少位字符,<br>参数killwords:表示截取字符串时是否要裁剪单词.<br>
                    参数end:表示结束字符
                </div>
            </span>
        </li>

        <li>wordcount 统计有多少个单词:
            <span>{{str2}}有{{str2|wordcount}}个单词</span>
        </li>
    </ul>
    <hr>

</div>

</body>
</html>
序列相关过滤器
<body>
<!--定义变量-->

{% set score=[10,12,76,0,35,88] %}
{% set names=['张三','李狗蛋','王大锤'] %}
{% set ages=(12,20,32,2) %}
{% set username='李狗蛋' %}
{% set userInfo={'name':'zhang3', 'age':22, 'job':'programer',} %}
{% set scores=(100,100,20,66,87,98,98,66)   %}

<!--用过滤器显示-->
<div>
    <ul>
        <b>序列相关过滤器:</b>
        <li> join连接元素:<span>员工名称:{{ names|join(',') }}</span>
            <div>join(分隔符) 参数直接写分隔符.不是关键字参数.</div>
        </li>
        <li>first,last获取序列中第一个,最后一个元素:
            <span>年龄最大的:{{ages|sort|last}},年龄最小的:{{ages|sort|first}}</span>
            <div>过滤器可以连着使用.跟linux下管道符一样可以连着使用.</div>
        </li>
        <li>list 转为列表: <span>scores=( {{scores}})转为列表=> {{scores|list}}</span></li>
        <li>length获得列表中元素个数: <span>共有 {{names|length}}名员工</span></li>
        <li>unique 去除序列中重复元素:<br>
            <span>成绩:{{scores}} <br>
            去重后:{{scores|unique|list}}</span></li>
        <li></li>
    </ul>
    <hr>
</div>

</body>

posted on 2023-03-17 10:23  Yancy00  阅读(157)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3