前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Flask支持正则路径匹配

Flask支持正则路径匹配

作者头像
上帝De助手
发布2019-10-12 16:04:38
2.2K0
发布2019-10-12 16:04:38
举报
文章被收录于专栏:TestQATestQA
flask默认情况下是不支持URL的正则匹配的,只会显示的支持几种简单的URL匹配方式:

•default([^/].*?)•string•int•float•path•uuid

而当我们对路径匹配有更高要求的时候,就无法满足我们的需要的;比如:匹配以student_开头后面跟学号的路径。此时就需要使用到正则匹配了。

flask虽然没有显式的支持URL路径的正则匹配,但骨子里还是支持的;并且提供了一个扩展URL路径匹配的接口,我们只要按照要求注册一个URL匹配类即可。

首先,我们需要定义一个正则转换类,该类必须要继承自BaseConverter基类,重点是在init方法中需要把args的第一个参数赋值为regex变量。

代码语言:javascript
复制
from werkzeug.routing import BaseConverter

class RegexConverter(BaseConverter):
    def __init__(self, url_map, *args):
        super(RegexConverter, self).__init__(url_map)
        self.url = url_map
        self.regex = args[0]   # 正则的匹配规则

    def to_python(self, value):
        return value

接着,就可以开始注册已经已经定义好的URL转换类了;方法如下:

代码语言:javascript
复制
from flask import Flask
from RegexConverter import RegexConverter

app = Flask(__name__)
app.url_map.converters['re'] = RegexConverter   # 注册url转换类


@app.route('/<re(r".*"):path>')         # 设置使用正则匹配url的规则
def test(path):
    return path


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=80)

只需2步操作就可以使用正则表达式来匹配url路径了,是不是很方便呢!

为什么说flask骨子里就支持正则匹配url呢,那是因为前面列出的6种flask默认支持的url匹配方式,其本质上就是通过正则规则来实现的。只不过提前帮我们把正则匹配规则写好了而已。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 TestQA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档