Flask - 模板控制块和模板过滤器

控制块

  • {% if 条件 %} {% endif %}

    • 添加标号 : {{ loop.index }}
    • 标号倒序 : {{ loop.revindex }}
    • 判断是否是第一行 : {{ loop.first }}
    • 判断是否是最后一行 : {{ loop.last}}
  • {% for 变量 in 可迭代的对象 %} {% endfor %}

过滤器

  • 过滤器的本质就是函数
  • 过滤器语法 :
    • {{ 变量名 | 过滤器 }}

常用过滤器

  • salfe : 禁用转译
  • capitalize : 首字母大写
  • lower : 全部小写
  • upper : 全部大写
  • title : 每一个单词的首字母大写
  • format : 格式化
    • {{ '%s is %d' } | format('hanmeimei', 10) }}
  • truncate : 字符串截断
    • {{ 'hello world' | truncate(5) }}

列表过滤器的使用

  • {{ girls | first }} : 取出列表中第一个元素
  • {{ girls | last }} : 取出列表中最后一个元素
  • {{ girls | length }} : 列表的长度
  • {{ girls | sum }} : 列表的求和. 整型的计算
  • {{ girls | sort}} : 排序

字典过滤器的使用

  • {{ user.0 }} : 获取第一个元素
  • {% for v in user.0.vlaues() %} {% endfor %} : 获取值
  • {% for v in user.0.keys() %} {% endfor %} : 获取键
  • {% for v in user.0.items() %} {% endfor %} : 获取键值对

自定义模板过滤器

app.py

from flask import Flask, render_template

app = Flask(__name__)


# 过滤器本质就是函数
def replace_hello(value):
    # 把hello替换为空字符
    value = value.replace('hello', '')
    # 去除字符串两端的空格
    return value.strip()


@app.route('/show')
def index():
    msg = 'hello everyone hello world'
    return render_template('show.html', msg=msg)


if __name__ == '__main__':
	# 注册模板过滤器
    app.add_template_filter(replace_hello, 'replace')
    app.run()

show.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .a{
            color: red;
        }
    </style>
</head>
<body>
    <div>
        {{ msg }}
        <hr>
        <!-- 使用自定义模板 -->
        {{ msg | replace }}
    </div>
</body>
</html>

第二种方式 (装饰器)

  • 需求 : 反转列表

app.py

from flask import Flask, render_template

app = Flask(__name__)


# 装饰器的方式
@app.template_filter('li')
def reverse_list(li):
    temp_li = list(li)
    temp_li.reverse()
    return temp_li


@app.route('/show')
def index():
    msg = 'hello'
    return render_template('show.html', msg=msg)


if __name__ == '__main__':
    app.run()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值