flask灵活正则匹配路由举例

#! /usr/bin/python3
# -*- coding:utf-8 -*-
# file: learn_flask.py
# author: wangchenxi
# mail: wongchenxi@icloud.com
# brief:
# version: 0.1.00
# Create Time:2019-12-22 00:00:14
# Last Update: 2019-12-22 00时10分34秒

from flask import Flask

app = Flask(__name__)

# 导入BasseConverter类,作为所有自定义转换器的父类
from werkzeug.routing import BaseConverter


# 定义自己的转换器,继承于BaseConvert类
class RegexConverter(BaseConverter):
    def __init__(self, url_map, regex):
        # 调用父类的构造方法
        super().__init__(map=url_map)
        # 将正则表达式的参数保存到对象的属性中,flask会去使用这个属性来进行路由的正则匹配
        self.regex = regex

# 将自定义的转换器添加到flask的应用中
app.url_map.converters['re'] = RegexConverter

# 然后就可以用了 re(r'regex'):mobile 的方式使用,如下
# 这里匹配的是一个十一位的数字
@app.route('/send/<re(r"\d{11}"):mobile>', strict_slashes=False, endpoint='test_re_send')
def send_message(mobile):
    return 'send message to {}'.format(mobile)

@app.route("/send/<string:username>",  endpoint='string_send') # 默认动态参数 为string
def home(username):
    return f"123 200 Ok!{username}"


if __name__ == '__main__':
    app.run('0.0.0.0', 8000)

版权声明:除特别注明外,本站所有文章均为王晨曦个人站点原创

转载请注明:出处来自王晨曦个人站点 » flask灵活正则匹配路由举例

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注