雷火电竞-中国电竞赛事及体育赛事平台

歡迎來到入門教程網(wǎng)!

正則表達(dá)式

當(dāng)前位置:主頁(yè) > 網(wǎng)絡(luò)編程 > 正則表達(dá)式 >

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

來源:本站原創(chuàng)|時(shí)間:2020-01-11|欄目:正則表達(dá)式|點(diǎ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)站的支持!

上一篇:正則表達(dá)式截取身份證號(hào)碼加密的方法

欄    目:正則表達(dá)式

下一篇:python爬蟲正則表達(dá)式之處理?yè)Q行符

本文標(biāo)題:正則表達(dá)式匹配路由的實(shí)現(xiàn)代碼

本文地址:http://www.jygsgssxh.com/a1/zhengzebiaodashi/11230.html

網(wǎng)頁(yè)制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語(yǔ)言數(shù)據(jù)庫(kù)服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有