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位的數字結尾 ,效果如圖

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM