Flask之钩子函数

Flask之钩子函数

类似django的中间件,作用就是在进入框架的之后 http方法之前或返回response之前进行一些操作 Flask的钩子函数可在注册时根据注册的app或者蓝图从而确定钩子函数作用的范围(可全局 也可作用某一个蓝图)

方法:

一共四种方方法

before_first_request()

执行时间:在处理第一个请求前运行 before_request之前

格式:

@App.before_app_first_request
def before_app_first_request():
	pass

参数:

​ 没有参数

返回值:

​ None 请求继续

​ response对象 终止本次请求 直接返回结果

before_request()

执行时间:每次请求都执行 http方法之前

格式:

@App.before_app_request
def before_app_request():
	pass

参数:

​ 没有参数

返回值:

​ None 请求继续

​ response对象

after_request()

执行时间:如果没有未处理的异常抛出,在每次请求后运行(http方法之后执行)

格式:

@App.after_request
def after_request(response):
	pass
	return response

参数:

​ 视图方法中返回的response对象

返回值:

​ response对象 可在返回前修改

teardown_request()

执行时间:在每次请求后运行,即使有未处理的异常抛出也执行

格式:

@App.teardown_request
def teardown_request(response):
	pass
	return response

参数:

​ exception错误信息

返回值:

​ None

示例:

仿照Django中的中间件

第一步

应用目录下创建middlewares包目录,每个功能实现以个中间件(每个功能是一个py文件)

第二步

在middlewares目录下创建中间件文件

from flask import request
from flask import session
from flask import g

#参数:蓝图对象
def verifycodeMiddleware(blueprint):
    @blueprint.before_app_request
    def before():
        print("------验证验证码-------")
第三步

注册中间件(蓝图文件中)

# 注册中间件
from myApp.middlewares import verifycodeMiddleware
verifycodeMiddleware(myApp)

扩展:

from flask import request
from flask import session
from flask import g

#参数:蓝图对象
def verifycodeMiddleware(app):
    @app.before_request
    def before():
        print("****验证验证码****")
app.py -》注册 verifycodeMiddleware(app)

说明

# 钩子函数
@myApp.before_app_first_request
def first():
    print("-------------first")
@myApp.before_app_request
def before():
    print("-------------before")
    # 验证验证
    # 获取前端发送的验证码
    # 获取session中的验证码
    # 判断两者是否相同,相同返回None,否则重定向会登陆界面

    # 验证是否登录
    # 获取状态保持相关信息(账号)
    # 如果没有状态保持说明没有登陆,重定向登陆界面
    # 根据状态保持的账号获取用户对象
    # 获取客户端发送的cookie中的键为token的值
    # 如果没有说明没有登陆,重定向登陆界面
    # 判断用户中的token与cookie中的token值是否相同,不相同则重定向登陆界面
@myApp.after_app_request
def after(response):
    print("-------------after")
    return response

@myApp.teardown_app_request
def teardown(exception):
    print("-------------teardown")
    print(exception)

信息来源:sunck

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值