在 web 開發中,可能會出現限制用戶訪問規則的場景,那么這個時候就需要用到正則匹配,根據自己的規則去限定請求參數再進行訪問
具體實現步驟為:
- 導入轉換器基類:在 Flask 中,所有的路由的匹配規則都是使用轉換器對象進行記錄
- 自定義轉換器:自定義類繼承于轉換器基類
- 添加轉換器到默認的轉換器字典中
- 使用自定義轉換器實現自定義匹配規則
代碼實現
導入轉換器基類
from werkzeug.routing import BaseConverter
自定義轉換器
# 自定義正則轉換器
class RegexConverter(BaseConverter):
def __init__(self, url_map, *args):
super(RegexConverter, self).__init__(url_map)
# 將接受的第1個參數當作匹配規則進行保存
self.regex = args[0]
添加轉換器到默認的轉換器字典中,并指定轉換器使用時名字為: re
app = Flask(__name__)
# 將自定義轉換器添加到轉換器字典中,并指定轉換器使用時名字為: re
app.url_map.converters['re'] = RegexConverter
使用轉換器去實現自定義匹配規則
當前此處定義的規則是:3位數字
@app.route('/user/re("[0-9]{3}"):user_id>')
def user_info(user_id):
return "user_id 為 %s" % user_id
運行測試:http://127.0.0.1:5000/user/123 ,如果訪問的url不符合規則,會提示找不到頁面
系統自帶轉換器
DEFAULT_CONVERTERS = {
'default': UnicodeConverter,
'string': UnicodeConverter,
'any': AnyConverter,
'path': PathConverter,
'int': IntegerConverter,
'float': FloatConverter,
'uuid': UUIDConverter,
}
系統自帶的轉換器具體使用方式在每種轉換器的注釋代碼中有寫,要注意每種轉換器初始化的參數。
總結
以上所述是小編給大家介紹的正則表達式匹配路由的實現代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
您可能感興趣的文章:- js正則表達式 匹配兩個特定字符間的內容示例
- 正則表達式之匹配數字范圍
- PHP preg_match實現正則表達式匹配功能【輸出是否匹配及匹配值】
- Java正則表達式(匹配、切割、替換、獲取)等方法
- C#正則表達式匹配與替換字符串功能示例
- JS匹配日期和時間的正則表達式示例
- 正則表達式實現字符的模糊匹配功能示例
- 正則表達式匹配括號外的符號及數據