Flask 請求擴充套件 中介軟體

2021-10-04 20:14:57 字數 1630 閱讀 9985

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

特點: 當時返回值為空或none時,繼續向下走,否則直接攔截,並向前端返回return的值

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

def process_request(*args,**kwargs):

if request.path == '/login': # 如果是登入介面直接通過

return none

user = session.get('user_info')

if user:

return none

return redirect('/login')

模擬django中介軟體中的process_response,每乙個請求之後繫結乙個函式

特點: 傳入response,返回response

def process_response(response): # 注意 函式必須傳入 response

print("我是請求之後函式")

# print(response) return response # 注意 函式必須返回 response

def test():

print("我是真的檢視")

return render_template("test.html")

>>>:

# 我是真的檢視

# 我是請求之後函式

定製錯誤資訊 如: 路徑不存在時404,伺服器內部錯誤500

def error_404(arg):

print(arg)

return "404錯誤了"

如論有沒有異常都會執行,如果沒有異常這個引數就是none,有就記錄這個異常

def tear(e):

print('teardown_request') # 可以用來記錄bug日誌

print(e)

全域性template函式, 在任意html頁面都可以呼叫

# 全域性template函式, 在任意html頁面都可以呼叫

def sb(a1, a2):

return a1 + a2

呼叫方式:}

過濾器,可定義對個引數,任意html頁面可呼叫

def db(a1, a2, a3):

print(a1,a2,a3)

return a1 + a2 + a3

呼叫方式:}

第一次請求時,會呼叫函式,之後不再呼叫

def before_first():

print("before_first_request") # 會在檢視函式前呼叫

from flask import flask

def index():

return 'hello world!'

# 模擬中介軟體

class md(object):

def __call__(self, environ, start_response):

print('開始之前 做一些事情')

print('結束之後 做一些事情')

return ret

if __name__ == '__main__':

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

模擬django中介軟體中的process request,在請求收到之前繫結乙個函式做一些事情 基於它做使用者登入認證 defprocess request args,kwargs if request.path login return none user session.get user in...

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...