本篇文章給大家分享的是有關(guān)Flask框架中有哪些常見(jiàn)的裝飾器,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。
新區(qū)網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站設(shè)計(jì)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)建站成立于2013年到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。@app.before_request def before(*args,**kwargs): print('請(qǐng)求之前') ''' 如果允許通過(guò)訪問(wèn),可以return None 該裝飾器裝飾的函數(shù)如果有return其他內(nèi)容則直接結(jié)束訪問(wèn), 效果有點(diǎn)類似django的process_reqeust中間件方法。 比如通過(guò)這個(gè)裝飾器寫(xiě)登陸驗(yàn)證,判斷其是否有session,沒(méi)有則不允許訪問(wèn),有則繼續(xù)訪問(wèn) 然后通過(guò)request.path判斷訪問(wèn)的函數(shù),如果是登陸(白名單)則通過(guò)。 request.url 是完整的url request.path是域名后面的url正則 ''' if request.path == '/login': return None user = session.get('user_info') if user: return None return redirect('/login')
類似process_response
@app.after_request def after(response): #效果和process_response是一樣的,必須有返回值,沒(méi)有則報(bào)錯(cuò)。 print('我走了') return response
flask中間件裝飾器執(zhí)行順序。
如果多個(gè)app.before_request
和app.after_request
,
那么執(zhí)行順序也和django類似,
app.before_request
是按照從上而下執(zhí)行(文件的上下),app.after_request
是自下而上執(zhí)行。
如果在app.before_request
中return
了其他內(nèi)容,請(qǐng)求被攔截,那么不會(huì)執(zhí)行視圖函數(shù),
直接從最后一個(gè)app.after_reqeust
倒著開(kāi)始執(zhí)行所有after_request
。
自定義錯(cuò)誤頁(yè)面:
@app.error_handlers(404) def error_404(arg): '''自定義錯(cuò)誤頁(yè)面,根據(jù)狀態(tài)碼定制''' return "404錯(cuò)誤啦"
模板中定制方法:
前端直接調(diào)用后端函數(shù)的裝飾器:
@app.template_global() def xx(a1,a2): return a1+a2 ''' 這個(gè)裝飾器的作用就是,可以在前端直接通過(guò){{ xx(1,2)}}來(lái)調(diào)用后端的這個(gè)函數(shù)。 '''
相當(dāng)于filter的裝飾器
@app.template_filter() def db(a1,a2,a3): return a1+a2+a3 ''' 效果和django的Filter相似,前端渲染的時(shí)候需要注意寫(xiě)法 {{ 1|db(2,3)}} 1是第一個(gè)參數(shù),后面是2,3參數(shù)。 '''
第一次來(lái)請(qǐng)求操作的裝飾器:
@app.before_first_request def first(*args,**kwargs): pass ''' 只有第一次請(qǐng)求時(shí)候才執(zhí)行的函數(shù)裝飾器 '''
Flask的中間件一般感覺(jué)用處不大,不如裝飾器方便
以上就是Flask框架中有哪些常見(jiàn)的裝飾器,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。