flask 請求擴充套件與中介軟體

2021-09-25 08:23:08 字數 1469 閱讀 5521

模擬django中介軟體中的process_request,在請求收到之前繫結乙個函式做一些事情

#基於它做使用者登入認證

defprocess_request

(*args,

**kwargs)

:if request.path ==

'/login'

:return

none

user = session.get(

'user_info'

)if user:

return

none

return redirect(

'/login'

)

模擬django中介軟體中的process_response,每乙個請求之後繫結乙個函式,如果請求沒有異常

defprocess_response1

(response)

:print

('process_response1 走了'

)return response

第一次請求時,跟瀏覽器無關

deffirst()

:pass

每乙個請求之後繫結乙個函式,即使遇到了異常

defter

(e):

pass

路徑不存在時404,伺服器內部錯誤500

404)

deferror_404

(arg)

:return

"404錯誤了"標籤)

defsb

(a1, a2)

:return a1 + a2

#}過濾器

)def

db(a1, a2, a3)

:return a1 + a2 + a3

#}總結:

1 重點掌握before_request和after_request,

2 注意有多個的情況,執行順序

3 before_request請求攔截後(也就是有return值),response所有都執行,

即在before-request直接返回response與django在檢視中返回response的走法一致。

from flask import flask

'/')

defindex()

:return

'hello world!'

# 模擬中介軟體

classmd(

object):

def__init__

: def

__call__

(self, environ, start_response)

:print

('開始之前'

)print

('結束之後'

)return ret

if __name__ ==

'__main__'

:)

Flask 請求擴充套件 中介軟體

模擬django中介軟體中的process request,在請求收到之前繫結乙個函式做一些事情 特點 當時返回值為空或none時,繼續向下走,否則直接攔截,並向前端返回return的值 基於它做使用者登入認證 def process request args,kwargs if request.p...

flask 中介軟體

根據裝飾器 from functools import wraps def auth func wraps func def inner args,kwargs if not session.get user return redirect url for login ret func args,k...

flask中介軟體

from flask import flask def index print 檢視函式中 return hello world class my middle def init def call self,args,kwargs print 中介軟體的 上 print 中介軟體的 下 return...