欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2018年07月17日 08:39:49   作者:鎧甲巨人  
這篇文章主要介紹了Flask框架各種常見裝飾器,結合實例形式簡單分析了flask框架各種常見裝飾器的功能、用法及相關操作注意事項,需要的朋友可以參考下

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

效果類似django的process_request的裝飾器

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

flask中間件裝飾器執(zhí)行順序。

如果多個app.before_requestapp.after_request

那么執(zhí)行順序也和django類似,

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

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

直接從最后一個app.after_reqeust倒著開始執(zhí)行所有after_request。

自定義錯誤頁面:

@app.error_handlers(404)
def error_404(arg):
  '''自定義錯誤頁面,根據狀態(tài)碼定制'''
  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_request
def first(*args,**kwargs):
  pass
'''
只有第一次請求時候才執(zhí)行的函數裝飾器
'''

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

通過重新復制app.wsgi_app,

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

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

希望本文所述對大家Python程序設計有所幫助。

相關文章

  • python實現(xiàn)蒙特卡羅方法教程

    python實現(xiàn)蒙特卡羅方法教程

    在本篇文章里小編給大家分享了關于python實現(xiàn)蒙特卡羅方法和知識點,有需要的朋友們學習下。
    2019-01-01
  • Python爬蟲爬取百度搜索內容代碼實例

    Python爬蟲爬取百度搜索內容代碼實例

    這篇文章主要介紹了Python爬蟲爬取百度搜索內容代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • Python set集合類型操作總結

    Python set集合類型操作總結

    這篇文章主要介紹了Python set集合類型操作總結,本文介紹了一個小技巧、去重技巧、創(chuàng)建set、set基本操作等內容,需要的朋友可以參考下
    2014-11-11
  • Python MySQLdb 使用utf-8 編碼插入中文數據問題

    Python MySQLdb 使用utf-8 編碼插入中文數據問題

    這篇文章主要介紹了Python MySQLdb 使用utf-8 編碼插入中文數據問題,需要的朋友可以參考下
    2018-03-03
  • window7下的python2.7版本和python3.5版本的opencv-python安裝過程

    window7下的python2.7版本和python3.5版本的opencv-python安裝過程

    這篇文章主要介紹了window7下的python2.7版本和python3.5版本的opencv-python安裝過程,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • Pandas之groupby( )用法筆記小結

    Pandas之groupby( )用法筆記小結

    這篇文章主要介紹了Pandas之groupby( )用法筆記小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • Python合并多個裝飾器小技巧

    Python合并多個裝飾器小技巧

    這篇文章主要介紹了Python合并多個裝飾器小技巧,本文用改寫調用函數的方式實現(xiàn)把多個裝飾器合并成一行、一個函數來調用,需要的朋友可以參考下
    2015-04-04
  • 給Python入門者的一些編程建議

    給Python入門者的一些編程建議

    這篇文章主要介紹了給Python入門者的一些編程建議,包括對集合初始化和GIL理解等一些需要注意的地方,需要的朋友可以參考下
    2015-06-06
  • Python?不設計?do-while?循環(huán)結構的理由

    Python?不設計?do-while?循環(huán)結構的理由

    Python作為一種語言不支持do-while循環(huán)。?但是,我們可以采用一種變通方法來模擬do-while循環(huán)?。下面通過本文給大家分享下Python?不設計do-while?循環(huán)結構的理由,需要的朋友可以參考下
    2022-01-01
  • python3整數反轉的實現(xiàn)方法

    python3整數反轉的實現(xiàn)方法

    這篇文章主要介紹了python3整數反轉的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04

最新評論