日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
創(chuàng)新互聯(lián)Python教程:flask怎么設(shè)置路由

通常有以下幾種定義路由函數(shù)的方法:

成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括南漳網(wǎng)站建設(shè)、南漳網(wǎng)站制作、南漳網(wǎng)頁(yè)制作以及南漳網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,南漳網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到南漳省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

1.使用flask.Flask.route() 修飾器。

2.使用flask.Flask.add_url_rule()函數(shù)。

3.直接訪問(wèn)基于werkzeug路由系統(tǒng)的flask.Flask.url_map.

一 、讓我們從最常用的@app.route()修飾器開(kāi)始。

def route(self, rule, **options):
        def decorator(f):
            endpoint = options.pop('endpoint', None)
            self.add_url_rule(rule, endpoint, f, **options)
            return f
        return decorator

可以看到修飾器是對(duì)add_url_rule函數(shù)的包裝,當(dāng)我們寫(xiě)如下代碼時(shí):

@app.route('/index.html')
def index():
    return "Hello World!"

實(shí)際上上面的代碼轉(zhuǎn)換成:

def index():
    return "Hello World!"
index = app.route('/index.html')(index)

也就是,rule = '/index.html', options = { }, 執(zhí)行decorator(index) 時(shí)會(huì)執(zhí)行self.add_url_rule(rule, endpoint, f, **options)

二、下面回過(guò)頭,來(lái)看看當(dāng)Flask運(yùn)行時(shí),一個(gè)Request來(lái)了,會(huì)發(fā)生什么,仍然從Flask.wsgi_app開(kāi)始閱讀。
已經(jīng)知道,當(dāng)一個(gè)Request到來(lái)時(shí),會(huì)首先push RequestContext和AppContext,在RequestContext中的init函數(shù)中有:

...self.url_adapter = app.create_url_adapter(self.request)
...self.match_request()
def create_url_adapter(self, request):        if request is not None:
            return self.url_map.bind_to_environ(request.environ,
                server_name=self.config['SERVER_NAME'])
        ...

首先將Flask.url_map與當(dāng)前到來(lái)的Request中environ進(jìn)行綁定,獲得一個(gè)url_adapter。

def match_request(self):
        try:
            url_rule, self.request.view_args = \
                self.url_adapter.match(return_rule=True)
            self.request.url_rule = url_rule
        except HTTPException as e:
            self.request.routing_exception = e

獲得url_adaptor之后,調(diào)用match_request,url_adapter.match()會(huì)返回一個(gè)元組view_args就是url_rule中的參數(shù),比如Rule(//, endpoint='blog/archive')這個(gè)Rule,而請(qǐng)求是/2016/,那么view_args={year: 2016}. url_rule和view_args被儲(chǔ)存在Request中。在Request類中,我們可以直接Request.endpoint將返回url_rule.endpoint.

在url_rule和view_args被裝載到Request中后,我們繼續(xù)對(duì)wsgi_app中的response = self.full_dispatch_request()這個(gè)過(guò)程與路由相關(guān)的內(nèi)容進(jìn)行分析。

 def full_dispatch_request(self):        self.try_trigger_before_first_request_functions()        try:
            request_started.send(self)
            rv = self.preprocess_request()            if rv is None:
                rv = self.dispatch_request()
         ...

dispatch_request()處理完畢,將返回值儲(chǔ)存在rv變量中。通常,視圖函數(shù)會(huì)return render_template(...). 返回值接下來(lái)經(jīng)過(guò)一系列處理,發(fā)送到客戶端。


當(dāng)前標(biāo)題:創(chuàng)新互聯(lián)Python教程:flask怎么設(shè)置路由
地址分享:http://m.5511xx.com/article/cdjhdpg.html