国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Flask框架各種常見裝飾器示例

2020-02-15 22:26:09
字體:
來源:轉載
供稿:網友

本文實例講述了Flask框架各種常見裝飾器。分享給大家供大家參考,具體如下:

效果類似django的process_request的裝飾器

@app.before_requestdef before(*args,**kwargs):  print('請求之前')  '''  如果允許通過訪問,可以return None  該裝飾器裝飾的函數如果有return其他內容則直接結束訪問,  效果有點類似django的process_reqeust中間件方法。  比如通過這個裝飾器寫登陸驗證,判斷其是否有session,沒有則不允許訪問,有則繼續訪問  然后通過request.path判斷訪問的函數,如果是登陸(白名單)則通過。  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_requestdef after(response):  #效果和process_response是一樣的,必須有返回值,沒有則報錯。  print('我走了')  return response

flask中間件裝飾器執行順序。

如果多個app.before_requestapp.after_request

那么執行順序也和django類似,

app.before_request是按照從上而下執行(文件的上下),app.after_request是自下而上執行。

如果在app.before_requestreturn了其他內容,請求被攔截,那么不會執行視圖函數,

直接從最后一個app.after_reqeust倒著開始執行所有after_request

自定義錯誤頁面:

@app.error_handlers(404)def error_404(arg):  '''自定義錯誤頁面,根據狀態碼定制'''  return "404錯誤啦"

模板中定制方法:

前端直接調用后端函數的裝飾器:

@app.template_global()def xx(a1,a2):  return a1+a2'''這個裝飾器的作用就是,可以在前端直接通過{{ xx(1,2)}}來調用后端的這個函數。'''

相當于filter的裝飾器

@app.template_filter()def db(a1,a2,a3):  return a1+a2+a3'''效果和django的Filter相似,前端渲染的時候需要注意寫法{{ 1|db(2,3)}} 1是第一個參數,后面是2,3參數。'''

第一次來請求操作的裝飾器:

@app.before_first_requestdef first(*args,**kwargs):  pass'''只有第一次請求時候才執行的函數裝飾器'''

Flask的中間件一般感覺用處不大,不如裝飾器方便

通過重新復制app.wsgi_app

重寫這個類的__call__方法,如上圖,只是增加了兩個打印,效果同process_request,process_response

更多關于Python相關內容可查看本站專題:《Python入門與進階經典教程》、《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》及《Python文件與目錄操作技巧匯總》

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 天水市| 安图县| 淮安市| 大安市| 龙江县| 辉南县| 铜梁县| 衡水市| 宁乡县| 杨浦区| 教育| 黑山县| 汶上县| 治县。| 金门县| 高青县| 侯马市| 海伦市| 玉田县| 全椒县| 古交市| 大田县| 石景山区| 清镇市| 哈尔滨市| 隆安县| 青海省| 资溪县| 始兴县| 永济市| 当涂县| 潜山县| 白沙| 商都县| 阳江市| 惠州市| 民县| 怀仁县| 鹤岗市| 万荣县| 循化|