合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
### 自定义转换器 在 `app` 目录下新建 `utils` 工具目录,在 `utils` 下新建 `commons.py` 文件 * 在 `app/utiles/commons.py` 文件中录入如下代码 ``` #!/usr/bin/env python3 # -*- encoding: utf-8 -*- from werkzeug.routing import BaseConverter # 自定义转换器 class ReCoverter(BaseConverter): def __init__(self, url_map, regex): # 调用父类的初始化方法 super(ReCoverter, self).__init__(url_map) # 保存正则表达式 self.regex = regex ``` 改造我们创建应用的工厂函数,为 flask 添加我们自定义的转换器 ``` #!/usr/bin/env python3 # -*- encoding: utf-8 -*- from flask import Flask from config import config_map from app.utils.commons import ReCoverter # 工厂模式 def create_app(config_name):     app = Flask(__name__) # 设置 flask 的配置信息     config_class = config_map[config_name]     app.config.from_object(config_class) # 为 flask 添加自定义的转换器 app.url_map.converters["re"] = ReCoverter # 注册蓝图 from app import api_1_0     app.register_blueprint(api_1_0.bp, url_prefix="/api/v1.0") # 如果只是接口,可以不注册 admin 模块 from app import admin     app.register_blueprint(admin.bp, url_prefix="/admin") return app ``` ## 使用自定义转换器 * 为 `app/api_1_0/controller` 下的 `index.py` 录入如下代码 ``` #!/usr/bin/env python3 # -*- encoding: utf-8 -*- from app.api_1_0 import bp @bp.route('/mymobile/<re(r"1[3-9]\d{9}"):mobile>') def mymobile(mobile): return mobile ```