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位的数字结尾 ,
效果如图