Flask路由中使用正则表达式匹配

1.说明

由于flask并不支持直接使用正则表达式来匹配路由,我们可以使用werkzeug.routing的BaseConverter来实现

 

2.代码

from flask import Flask
#而在某些特定的需求下,需要动态匹配一些有特殊要求的字符,这就可以考虑用正则表达式的方式传入
from werkzeug.routing import BaseConverter

#编写正则转化的类
class RegexConverter(BaseConverter):
    def __init__(self, url_map,*items):
        super(RegexConverter,self).__init__(url_map)
        self.regex = items[0]

app = Flask(__name__)
#初始化转换器
app.url_map.converters['reg'] = RegexConverter

@app.route('/user/<reg("[a-z]{3}-\d{5,6}"):user_id>')
def user(user_id):
    return 'user id : %s' %user_id

if __name__ == '__main__':
    app.run()

 

其中路由中使用的reg字符串表示匹配 三个小写英文字母开头,中间短横,末尾以5到6位的数字结尾 ,效果如图

 

 

 

 

posted @ 2020-03-17 14:55  YF-海纳百川  阅读(1268)  评论(0编辑  收藏  举报