欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Bottle框架源碼學(xué)習(xí)一-創(chuàng)新互聯(lián)

# -*- coding=utf-8 -*-
from bottle import route, run, template,Bottle

app = Bottle()

@route("/hello/<name>")
def index(name):
    return template("<b>Hello, `name`</b>", name=name)


run(app, host="localhost", port=8080, reloader=True)

以上是官方一個簡單示例,

創(chuàng)新互聯(lián)是一家專注于網(wǎng)站設(shè)計、成都網(wǎng)站制作與策劃設(shè)計,桃城網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10余年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:桃城等地區(qū)。桃城做網(wǎng)站價格咨詢:13518219792

route 裝飾器的作用是將瀏覽器請求的路徑綁定到指定的函數(shù)(index)中,瀏覽器訪問http://localhost:8080/hello/youname 時,實際上就是調(diào)用了index函數(shù)。

下面看看route源碼

def make_default_app_wrapper(name):
    ''' Return a callable that relays calls to the current default app. '''
    @functools.wraps(getattr(Bottle, name))
    def wrapper(*a, **ka):
        return getattr(app(), name)(*a, **ka)
    return wrapper

route     = make_default_app_wrapper('route')

route是make_default_app_wrapper的別名,作者這樣寫的目的是為了簡化用戶輸入,而make_default_app_wrapper是是一個裝飾器,裝飾器的用法可以參考一下這些文章:

http://blog.scjia.cc/article/search/?wd=%E8%A3%85%E9%A5%B0%E5%99%A8

分析make_default_app_wrapper裝飾器函數(shù)

1.

  @functools.wraps(getattr(Bottle, name))

functools一python的標(biāo)準(zhǔn)庫之一,wraps的作用是讓被裝飾的函數(shù)能保留原來的__name__、__doc

看functools.wraps的簡單例子

import functools

def make_decorator(f):
    @functools.wraps(f)
    def wrapper(*args, **kws):
        """this is wrapper doc"""
        print 'calling  decorator function'
        return f(*args, **kws)
    return wrapper
    
@make_decorator
def example():
    """ this is my doc """
    print 'this is example'

example()
>>calling  decorator function
>>this is example

example.__name__
>>'example'
example.__doc__
>>' this is my doc '

如果去除@functools.wraps這段,__name__  將輸出wrapper, __doc__將輸出this is wrapper doc

2. 再看

getattr(Bottle, name)

獲取Bottle的route,因為Bottle是類,得到的是<unbound method Bottle.route>

return getattr(app(), name)(*a, **ka)

app()里面怎么實現(xiàn)暫時不看,意思是獲取app()對象的route方法,接著傳遞參數(shù)調(diào)用

相當(dāng)于,app()->route("/hello/yourname")

route的內(nèi)部實現(xiàn)先不看

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。

網(wǎng)頁題目:Bottle框架源碼學(xué)習(xí)一-創(chuàng)新互聯(lián)
文章源于:http://chinadenli.net/article18/dhpidp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、做網(wǎng)站、企業(yè)網(wǎng)站制作、企業(yè)建站、網(wǎng)站改版、ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站