第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

我覺得flask絕對(duì)沒有這么低級(jí),肯定有支持的方法,所以來向各路長老求個(gè)方子

我覺得flask絕對(duì)沒有這么低級(jí),肯定有支持的方法,所以來向各路長老求個(gè)方子

皈依舞 2023-04-14 18:14:48
flask跟web.py差別挺大的,尤其是在路由管理這塊。web.py把所有的路由都集中在一起,我比較喜歡這種方式。最近用flask,發(fā)現(xiàn)@app.route('<URL>')中URL只支持string、int、float、path 4種類型,并不支持正則。
查看完整描述

2 回答

?
當(dāng)年話下

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊

通過運(yùn)行如下代碼:

from flask import Flaskfrom pprint import pprintif __name__ == '__main__':
    app = Flask(__name__)
    pprint(app.url_map.converters)

可以獲取Flask默認(rèn)支持的轉(zhuǎn)換器:

{'any': <class 'werkzeug.routing.AnyConverter'>, 'default': <class 'werkzeug.routing.UnicodeConverter'>, 'float': <class 'werkzeug.routing.FloatConverter'>, 'int': <class 'werkzeug.routing.IntegerConverter'>, 'path': <class 'werkzeug.routing.PathConverter'>, 'string': <class 'werkzeug.routing.UnicodeConverter'>}

那如何創(chuàng)建一個(gè)新的路由解析轉(zhuǎn)化器呢?
在Flask的app.py里有個(gè)簡單的例子,這個(gè)例子是創(chuàng)建了一個(gè)list類型的路由轉(zhuǎn)換器:

from werkzeug.routing import BaseConverter           
                                                     
class ListConverter(BaseConverter):                  
    def to_python(self, value):                      
        return value.split(',')                      
    def to_url(self, values):                        
        return ','.join(BaseConverter.to_url(value)  
                        for value in values)         
                                                     
app = Flask(__name__)                                app.url_map.converters['list'] = ListConverter

那么我們可以容易創(chuàng)建一個(gè)正則解析器,因?yàn)橹暗霓D(zhuǎn)換器最終也是轉(zhuǎn)換成正則的,只需要將獲取的值設(shè)置為regex屬性就可以使用了:

from flask import Flaskfrom werkzeug.routing import BaseConverterclass RegexConverter(BaseConverter):    def __init__(self, map, *args):
        self.map = map
        self.regex = args[0]

app = Flask(__name__)
app.url_map.converters['regex'] = RegexConverter@app.route('/view/<regex("[a-zA-Z0-9]+"):uuid>/')def view(uuid):    """
    url: /view/1010000000125259/
    result: view uuid:1010000000125259
    """
    return "view uuid: %s" % (uuid)@app.route('/<regex(".*"):url>')def not_found(url):    """
    url: /hello
    result: not found: 'hello'
    """
    return "not found: '%s'" % (url)


查看完整回答
反對(duì) 回復(fù) 2023-04-17
?
犯罪嫌疑人X

TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊

插一句,flask也可以集中到一起。

python的裝飾器其實(shí)就是返回函數(shù)的函數(shù),外層函數(shù)的參數(shù)就是裝飾器的參數(shù),內(nèi)層函數(shù)的參數(shù)是被裝飾的函數(shù)。所以直接調(diào)用app.route應(yīng)該會(huì)返回一個(gè)函數(shù),直接把req handler傳進(jìn)去就可以注冊(cè)它。

于是,你可以這樣寫:

app.route(pattern)(handler)

就能集中到一起了。


查看完整回答
反對(duì) 回復(fù) 2023-04-17
  • 2 回答
  • 0 關(guān)注
  • 199 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)