佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > 正則表達式匹配路由的實現(xiàn)代碼

正則表達式匹配路由的實現(xiàn)代碼

熱門標簽:服務(wù)器配置 團購網(wǎng)站 阿里云 Mysql連接數(shù)設(shè)置 科大訊飛語音識別系統(tǒng) 電子圍欄 Linux服務(wù)器 銀行業(yè)務(wù)

在 web 開發(fā)中,可能會出現(xiàn)限制用戶訪問規(guī)則的場景,那么這個時候就需要用到正則匹配,根據(jù)自己的規(guī)則去限定請求參數(shù)再進行訪問

具體實現(xiàn)步驟為:

  • 導入轉(zhuǎn)換器基類:在 Flask 中,所有的路由的匹配規(guī)則都是使用轉(zhuǎn)換器對象進行記錄
  • 自定義轉(zhuǎn)換器:自定義類繼承于轉(zhuǎn)換器基類
  • 添加轉(zhuǎn)換器到默認的轉(zhuǎn)換器字典中
  • 使用自定義轉(zhuǎn)換器實現(xiàn)自定義匹配規(guī)則

代碼實現(xiàn)

導入轉(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個參數(shù)當作匹配規(guī)則進行保存
    self.regex = args[0]

添加轉(zhuǎn)換器到默認的轉(zhuǎn)換器字典中,并指定轉(zhuǎn)換器使用時名字為: re

app = Flask(__name__)
# 將自定義轉(zhuǎn)換器添加到轉(zhuǎn)換器字典中,并指定轉(zhuǎn)換器使用時名字為: re
app.url_map.converters['re'] = RegexConverter

使用轉(zhuǎn)換器去實現(xiàn)自定義匹配規(guī)則

當前此處定義的規(guī)則是:3位數(shù)字

@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不符合規(guī)則,會提示找不到頁面

系統(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é)

以上所述是小編給大家介紹的正則表達式匹配路由的實現(xiàn)代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

您可能感興趣的文章:
  • js正則表達式 匹配兩個特定字符間的內(nèi)容示例
  • 正則表達式之匹配數(shù)字范圍
  • PHP preg_match實現(xiàn)正則表達式匹配功能【輸出是否匹配及匹配值】
  • Java正則表達式(匹配、切割、替換、獲取)等方法
  • C#正則表達式匹配與替換字符串功能示例
  • JS匹配日期和時間的正則表達式示例
  • 正則表達式實現(xiàn)字符的模糊匹配功能示例
  • 正則表達式匹配括號外的符號及數(shù)據(jù)

標簽:蚌埠 大理 棗莊 廣元 衢州 萍鄉(xiāng) 衡水 江蘇

巨人網(wǎng)絡(luò)通訊聲明:本文標題《正則表達式匹配路由的實現(xiàn)代碼》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    徐闻县| 开原市| 灌阳县| 冀州市| 林甸县| 长治市| 林芝县| 横山县| 深州市| 文成县| 西藏| 略阳县| 利川市| 健康| 南和县| 沂水县| 平远县| 大港区| 桃园市| 钦州市| 越西县| 顺义区| 蛟河市| 自贡市| 大竹县| 宜春市| 那坡县| 中阳县| 益阳市| 梧州市| 库伦旗| 新津县| 绥宁县| 波密县| 涞水县| 邵阳市| 道真| 玉环县| 淅川县| 茂名市| 常州市|