正則表達(dá)式匹配路由的實(shí)現(xiàn)代碼
在 web 開發(fā)中,可能會(huì)出現(xiàn)限制用戶訪問規(guī)則的場(chǎng)景,那么這個(gè)時(shí)候就需要用到正則匹配,根據(jù)自己的規(guī)則去限定請(qǐng)求參數(shù)再進(jìn)行訪問
具體實(shí)現(xiàn)步驟為:
- 導(dǎo)入轉(zhuǎn)換器基類:在 Flask 中,所有的路由的匹配規(guī)則都是使用轉(zhuǎn)換器對(duì)象進(jìn)行記錄
- 自定義轉(zhuǎn)換器:自定義類繼承于轉(zhuǎn)換器基類
- 添加轉(zhuǎn)換器到默認(rèn)的轉(zhuǎn)換器字典中
- 使用自定義轉(zhuǎn)換器實(shí)現(xiàn)自定義匹配規(guī)則
代碼實(shí)現(xiàn)
導(dǎo)入轉(zhuǎn)換器基類
from werkzeug.routing import BaseConverter
自定義轉(zhuǎn)換器
# 自定義正則轉(zhuǎn)換器 class RegexConverter(BaseConverter): def __init__(self, url_map, *args): super(RegexConverter, self).__init__(url_map) # 將接受的第1個(gè)參數(shù)當(dāng)作匹配規(guī)則進(jìn)行保存 self.regex = args[0]
添加轉(zhuǎn)換器到默認(rèn)的轉(zhuǎn)換器字典中,并指定轉(zhuǎn)換器使用時(shí)名字為: re
app = Flask(__name__) # 將自定義轉(zhuǎn)換器添加到轉(zhuǎn)換器字典中,并指定轉(zhuǎn)換器使用時(shí)名字為: re app.url_map.converters['re'] = RegexConverter
使用轉(zhuǎn)換器去實(shí)現(xiàn)自定義匹配規(guī)則
當(dāng)前此處定義的規(guī)則是:3位數(shù)字
@app.route('/user/<re("[0-9]{3}"):user_id>') def user_info(user_id): return "user_id 為 %s" % user_id
運(yùn)行測(cè)試:http://127.0.0.1:5000/user/123 ,如果訪問的url不符合規(guī)則,會(huì)提示找不到頁(yè)面
系統(tǒng)自帶轉(zhuǎn)換器
DEFAULT_CONVERTERS = { 'default': UnicodeConverter, 'string': UnicodeConverter, 'any': AnyConverter, 'path': PathConverter, 'int': IntegerConverter, 'float': FloatConverter, 'uuid': UUIDConverter, }
系統(tǒng)自帶的轉(zhuǎn)換器具體使用方式在每種轉(zhuǎn)換器的注釋代碼中有寫,要注意每種轉(zhuǎn)換器初始化的參數(shù)。
總結(jié)
以上所述是小編給大家介紹的正則表達(dá)式匹配路由的實(shí)現(xiàn)代碼,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
js正則表達(dá)式中的問號(hào)幾種用法小結(jié)
這篇文章主要介紹了js正則表達(dá)式中的問號(hào)幾種用法,比如+?,*?,{2,3}?可以停止匹配的貪婪模式,感興趣的朋友可以參考下2014-09-09Web?前端常用正則校驗(yàn)規(guī)則整理(常用示例)
這篇文章主要介紹了Web前端常用正則校驗(yàn)規(guī)則,本文給大家整理一些常見的示例供大家學(xué)習(xí)參考,需要的朋友可以參考下2023-05-05正則表達(dá)式中的正向預(yù)查和負(fù)向預(yù)查
這篇文章主要介紹了正則表達(dá)式中的正向預(yù)查和負(fù)向預(yù)查,本文通過(guò)幾個(gè)場(chǎng)景給大家分析 ,需要的朋友可以參考下2019-08-08