Python Flask 转换器详解:从默认到自定义

江屿
江屿
发布时间:2026-10-14| 6人浏览过
原创

本文详细介绍 Flask 中路由转换器的使用方法。首先解析默认字符串与整数转换器的区别,随后深入讲解如何基于 werkzeug.routing.BaseConverter 创建自定义转换器。通过定义正则表达式、注册到应用以及路由调用三步流程,实现手机号等复杂格式的精准匹配,帮助开发者灵活控制 URL 参数校验。

Flask 框架内置了多种默认转换器,用于处理 URL 中的路径参数。


from flask import Flask

app = Flask(__name__)

#/user/123
@app.route('/users/<user_id>')
def get_users_data(user_id):
	return 'get user{}'.format(user_id)

以字符串类型为例,当路由中未指定具体类型时,参数默认被视为字符串处理。例如在代码中访问 /user/123,变量 user_id 接收到的值即为字符串形式的 '123'。


from flask import Flask

app = Flask(__name__)

#/user/123
@app.route('/users/<int:user_id>')
def get_users_data(user_id):
	return 'get user{}'.format(user_id)



除了内置类型,Flask 支持开发者根据实际需求定义自定义转换器,以满足更复杂的参数校验需求。

实现自定义转换器的核心在于继承 werkzeug 提供的基类,并配置相应的匹配规则。

构建自定义转换器主要包含三个关键步骤:定义类、注册转换器以及应用路由。

第一步是创建继承自 BaseConverter 的转换器类,并在其中保存用于匹配的正则表达式。


from werkzeug.routing import BaseConverter

class MobileConverter(BaseConverter):
    """
    手机号格式
    """
    regex = r'1[3-9]\d{9}]'

需要注意的是,正则表达式的属性名必须固定为 regex,这是 Flask 识别规则的关键标识。

第二步是将定义好的自定义转换器告知 Flask 应用,将其注册到应用的 URL 映射系统中。


app = Flask(__name__)
#将自定义转换器添加到转换器字典中,并指定转换器使用时名字为:mobile
app.url_map.converters['mobile'] = MobileConverter

第三步是在定义路由时,使用注册好的转换器名称来修饰 URL 参数,从而启用该转换逻辑。


@app.route('/sms_codes/<mobile:mob_num>')
def send_sms_code(mob_num):
    return 'send sms code to {}'.format(mob_num)

通过上述步骤,即可完成 Flask 转换器的配置与使用,更多相关 Python Flask 转换器的使用内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

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

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 算法库。