Python Flask 转换器详解:从默认到自定义
本文详细介绍 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 转换器的使用内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













