由于flask并不支持直接使用正則表達(dá)式來匹配路由,我們可以使用werkzeug.routing的BaseConverter來實(shí)現(xiàn)
代碼:
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位的數(shù)字結(jié)尾
效果如圖:
image.png