Flask模板过滤器详解:内置用法与自定义实现

季宁
季宁
发布时间:2026-10-13| 5人浏览过
原创

本文详细介绍Flask模板中过滤器的使用方法。涵盖内置过滤器对字符串和列表的操作,如safe、capitalize、first等。重点讲解两种自定义过滤器的方式:通过add_template_filter方法和装饰器实现,并提示重名覆盖风险。适合需要灵活处理模板数据的Flask开发者参考。

过滤器

过滤器的本质是一个函数。在模板渲染中,有时不仅需要输出变量的原始值,还需要对其进行修改、格式化或运算。由于模板语法不能直接调用Python的所有方法,此时就需要借助过滤器来实现这些功能。

使用方式:

过滤器的标准调用格式为:变量名后接竖线符号,再跟上过滤器名称。

{{variable | filter_name(*args)}}

如果过滤器不需要接收额外参数,可以省略括号。此外,Flask中的过滤器支持链式调用,即多个过滤器可以连续使用。

{{variable | filter_name}}

常见内建过滤器

字符串操作

  • safe:禁用HTML转义。示例:<p>{{ '<em>hello</em>' | safe }}</p>
  • capitalize:将变量值的首字母转换为大写,其余字母转换为小写。示例:<p>{{ 'hello' | capitalize }}</p>
  • lower:将值全部转换为小写。示例:<p>{{ 'HELLO' | lower }}</p>
  • upper:将值全部转换为大写。示例:<p>{{ 'hello' | upper }}</p>
  • title:将值中每个单词的首字母转换为大写。示例:<p>{{ 'hello' | title }}</p>
  • reverse:实现字符串反转。示例:<p>{{ 'olleh' | reverse }}</p>
  • format:用于格式化输出。示例:<p>{{ '%s is %d' | format('name',17) }}</p>
  • striptags:在渲染前移除值中所有的HTML标签。示例:<p>{{ '<em>hello</em>' | striptags }}</p>
  • truncate:对字符串进行截断处理。示例:<p>{{ 'hello every one' | truncate(9)}}</p>

列表操作

  • first:获取列表中的第一个元素。示例:<p>{{ [1,2,3,4,5,6] | first }}</p>
  • last:获取列表中的最后一个元素。示例:<p>{{ [1,2,3,4,5,6] | last }}</p>
  • length:获取列表的长度。示例:<p>{{ [1,2,3,4,5,6] | length }}</p>
  • sum:对列表中的元素进行求和。示例:<p>{{ [1,2,3,4,5,6] | sum }}</p>
  • sort:对列表进行排序。示例:<p>{{ [6,2,3,1,5,4] | sort }}</p>

自定义过滤器

过滤器的本质是函数。当内置过滤器无法满足特定需求时,可以自定义过滤器。自定义过滤器主要有两种实现方式:

  • 一种是通过Flask应用对象的add_template_filter方法注册。
  • 另一种是通过装饰器来实现自定义过滤器。

重要提示:如果自定义过滤器的名称与内置过滤器重名,自定义过滤器将覆盖内置过滤器。

需求:添加一个用于反转列表的过滤器。

方式一

通过调用应用程序实例的add_template_filter方法实现自定义过滤器。该方法第一个参数是函数名,第二个参数是自定义的过滤器名称:

def do_listreverse(li):
  # 通过原列表创建一个新列表
  temp_li = list(li)
  # 将新列表进行返转
  temp_li.reverse()
  return temp_li

app.add_template_filter(do_listreverse,'lireverse')

方式二

使用装饰器来实现自定义过滤器。装饰器传入的参数是自定义的过滤器名称。

@app.template_filter('lireverse')
def do_listreverse(li):
  # 通过原列表创建一个新列表
  temp_li = list(li)
  # 将新列表进行返转
  temp_li.reverse()
  return temp_li

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。