flask 中介軟體

2021-09-25 12:28:42 字數 1562 閱讀 9880

根據裝飾器

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, **kwargs)

return ret

return inner

@auth

def login():

class middleware(object):

def __init__(self, old):

self.old = old

def __call__(self, *args, **kwargs):

print('請求前的操作')

ret = self.old(*args, **kwargs)

print('請求之後操作')

return ret

if __name__ == '__main__':

有返回值,就地返回,不執行檢視。  不寫返回值(return),或者return none,再執行檢視 

def ***():

if request.path == '/login':

return none # return none 接著執行檢視 有返回值就地返回

# 或者 return

if request.form.get('user'):

return none

return redirect('/login')必須有返回值

def x2(response): # 必須有response

print('after')

return response

def x1():

print('before')

def x2(response): # 必須有response

print('after')

return response

def index():

print('index')

return "index"

執行列印結果

before

index

after

不多說上圖

mm圖畫錯了, request4要改為response4 

就是說flask的中介軟體request1有返回值,不執行後面的request中介軟體,不執行檢視函式。直接執行其餘的response中介軟體

而django的request1有返回值也是不執行其他的request和檢視函式, 不過只會執行最後乙個respose。

執行順序 1 2 4 3

即before 按正序

after按反序

flask中介軟體

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

Flask 請求擴充套件 中介軟體

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

Flask框架之中介軟體

from flask import flask index def index return index頁面 class middleware object def init 服務端啟動時,自動執行 def call self,args,kwargs 每次有使用者請求到來的時候,都會執行 param...