Flask 自定义路由转换器

步骤

  1. 创建自定义转换器类

    • 继承 werkzeug.routing.BaseConverter
    • 实现 to_python 和(可选)to_url 方法。
  2. 将转换器注册到 Flask 应用

  3. 在路由中使用转换器

示例

创建转换器

假设需要自定义一个转换器 FourDigitYearConverter,用于匹配四位年份。

python 复制代码
# converters.py



from werkzeug.routing import BaseConverter

class FourDigitYearConverter(BaseConverter):
    def __init__(self, url_map):
        super().__init__(url_map)
        self.regex = r'\d{4}'  # 匹配四位数字

    def to_python(self, value):
        return int(value)  # 转换为整数

    def to_url(self, value):
        return f"{value:04d}"  # 确保是四位数字
注册转换器

在 Flask 应用中注册转换器:

python 复制代码
from flask import Flask
from converters import FourDigitYearConverter

app = Flask(__name__)

# 注册转换器
app.url_map.converters['yyyy'] = FourDigitYearConverter

定义路由

python 复制代码
@app.route('/year/<yyyy:year>/')
def year_view(year):
    return f"The year is {year}."
测试路由

访问 /year/2024/ 时:

  • URL 参数 2024 被捕获并转换为整数 2024
反向生成 URL
python 复制代码
with app.test_request_context():
    url = flask.url_for('year_view', year=2024)
    print(url)  # 输出:/year/2024/
相关推荐
无限大610 分钟前
《AI观,观AI》:专栏总结+答疑|吃透核心,解决你用AI的所有困惑
前端·后端
我的xiaodoujiao18 分钟前
API接口自动化测试详细图文教程学习系列1--序章
python·学习·pytest
ZhengEnCi24 分钟前
P1B-Python环境配置基础完全指南-Windows系统安装与验证
python
小杍随笔26 分钟前
【Rust 语言编程知识与应用:基础数据类型详解】
开发语言·后端·rust
毅航39 分钟前
告别 AI 名词焦虑:一文读懂从 LLM 到 Agent Skill的演进
人工智能·后端
m0_716667071 小时前
NumPy入门:高性能科学计算的基础
jvm·数据库·python
带娃的IT创业者1 小时前
Weclaw 请求路由实战:一个 request_id 如何在 800 个并发连接中精准找到目标浏览器?
python·websocket·fastapi·架构设计·实时通信·openclaw·weclaw
LucianaiB2 小时前
干货 | 手把手教你用 OpenClaw + Skill 实现微信公众号全自动创作发布
后端
eggwyw2 小时前
springboot和springframework版本依赖关系
java·spring boot·后端
韩立学长2 小时前
Springboot奶茶加盟信息管理系统m307m786(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端