博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
flask 过滤器
阅读量:5128 次
发布时间:2019-06-13

本文共 2864 字,大约阅读时间需要 9 分钟。

作用的对象是jinja2模版中的变量({

{}})

参考链接:

http://jinja.pocoo.org/docs/2.9/templates/#builtin-filters

 

内置过滤器

字符串操作

{
# 当变量未定义时,显示默认字符串,可以缩写为d #}

{

{ name | default('No name', true) }}

{
# 单词首字母大写 #}

{

{ 'hello' | capitalize }}

{
# 单词全小写 #}

{

{ 'XML' | lower }}

{
# 去除字符串前后的空白字符 #}

{

{ ' hello ' | trim }}

{
# 字符串反转,返回"olleh" #}

{

{ 'hello' | reverse }}

{
# 格式化输出,返回"Number is 2" #}

{

{ '%s is %d' | format("Number", 2) }}

{
# 关闭HTML自动转义 #}

{

{ 'name' | safe }}

{
% autoescape false %}{
# HTML转义,即使autoescape关了也转义,可以缩写为e #}

{

{ 'name' | escape }}

{
% endautoescape %}
#用管道的形式,如果avatar(后端传过来的变量)的值不存在,则用default的值 {
{ avatar|default('xxx') }}    
#这里的意思为获取avatar的长度,avatar为后端传过来的变量,可以是列表,也可以是字典 {
{ avatar|length }}      

 

数值操作

{
# 四舍五入取整,返回13.0 #}

{

{ 12.8888 | round }}

{
# 向下截取到小数点后2位,返回12.88 #}

{

{ 12.8888 | round(2, 'floor') }}

{
# 绝对值,返回12 #}

{

{ -12 | abs }}

 

列表操作

{
# 取第一个元素 #}

{

{ [1,2,3,4,5] | first }}

{
# 取最后一个元素 #}

{

{ [1,2,3,4,5] | last }}

{
# 返回列表长度,可以写为count #}

{

{ [1,2,3,4,5] | length }}

{
# 列表求和 #}

{

{ [1,2,3,4,5] | sum }}

{
# 列表排序,默认为升序 #}

{

{ [3,2,1,5,4] | sort }}

{
# 合并为字符串,返回"1 | 2 | 3 | 4 | 5" #}

{

{ [1,2,3,4,5] | join(' | ') }}

{
# 列表中所有元素都全大写。这里可以用upper,lower,但capitalize无效 #}

{

{ ['tom','bob','ada'] | upper }}

 

字典列表操作

{% set users=[{
'name':'Tom','gender':'M','age':20}, {
'name':'John','gender':'M','age':18}, {
'name':'Mary','gender':'F','age':24}, {
'name':'Bob','gender':'M','age':31}, {
'name':'Lisa','gender':'F','age':19}]%} {
# 按指定字段排序,这里设reverse为true使其按降序排 #}
    {
    % for user in users | sort(attribute='age', reverse=true) %}
  • {
    { user.name }}, {
    { user.age }}
  • {
    % endfor %}
{
# 列表分组,每组是一个子列表,组名就是分组项的值 #}
    {
    % for group in users|groupby('gender') %}
  • {
    { group.grouper }}
      {
      % for user in group.list %}
    • {
      { user.name }}
    • {
      % endfor %}
  • {
    % endfor %}
{
# 取字典中的某一项组成列表,再将其连接起来 #}

{

{ users | map(attribute='name') | join(', ') }}

 

内置过滤器:tojson,配合js使用

注意,这里要避免HTML自动转义,所以加上safe过滤器

 

自定义过滤器

自定义过滤器其实就是一个函数,自己写即可

def mylen(arg):#实现一个可以求长度的函数    return len(arg)# 该函数实现给定一个区间返回区间的内容def interval(test_str, start, end):#过滤器中传递多个参数,第一个参数为被过滤的内容,第二第三个参数需要自己传入    return test_str[int(start):int(end)]env = app.jinja_envenv.filters['mylen'] = mylen      #注册自定义过滤器env.filters['interval'] = interval   #注册自定义过滤器 @app.route("/") def index():   test_str = "hello"   return render_template("index.html", test_str=test_str) jinja2模板    

len: {
{test_str|mylen}}

interval: {
{test_str|interval(0,2)}}

    #test_str作为参数传到interval函数里

 

转载于:https://www.cnblogs.com/FRESHMANS/p/8428740.html

你可能感兴趣的文章
5月23日 格式与布局练习:汽车之家网站
查看>>
ACM-ICPC 2018 南京赛区网络预赛 I(回文树)
查看>>
追踪记录每笔业务操作数据改变的利器——SQLCDC
查看>>
Describe in brief Databases and SQL Server Databases Architecture.
查看>>
IP地址定位到物理地址
查看>>
字符集
查看>>
如何在Windows Azure虚拟机上部署OpenLogic CentOS镜像
查看>>
Java 多线程------01
查看>>
八大排序之堆排序
查看>>
LFS Linux From Scratch 笔记2(经验非教程)BLFS
查看>>
TensorFlow|非线性回归
查看>>
网站安全统一监测平台(WebPecker)
查看>>
java 调用 phantomjs
查看>>
类间关系总结
查看>>
properties配置文件读写,追加
查看>>
QR code 乱谈(一)
查看>>
shit IE & no table `border-collapse: collapse;`
查看>>
华为实习记录第二天
查看>>
element-ui国际化探索(大型项目适用)
查看>>
2014 Multi-University Training Contest 6 部分题目解题报告
查看>>