flask项目之使用钩子函数

在我们写好了简单的框架后,我们可以优化一下个人中心界面,这里我们希望用户在登录之后才可以进入个人中心,如果他还没有登录,就将他转到登录界面。
那么我们就需要用到钩子函数(如果你在视图函数中用if判断也可以,但是用户用路由访问时可能会拦不住),钩子函数的作用就是(百度查找的):**钩子函数是指在执行函数和目标函数之间挂载的函数,框架开发者给调用方提供一个point-挂载点,至于挂载什么函数由调用方决定**,简单来说就是在进入服务器前进行拦截是否可以通过。
在flask中钩子函数一般有:
直接应用在app上:
		**before_first_request
		before_request
		after_request
		teardown_request**

应用在蓝图上:
before_app_first_request
before_app_request
after_app_request
teardown_app_request

现在废话少说,直接上代码:

#先定义一个需要登录才能进入的路由列表
request_login_list=['/user/center']
@user_bp1.before_app_request
def before_request():
    print("before_app_request",request.path)
    if request.path in request_login_list:
        id = session.get('uid')
        if not id:
        	#在控制台中测试
            print("请先登录")
            return render_template('user/login.html')
        else:
            user=User.query.get(id)
            #g对象:本次请求的对象(flask框架已经帮你定义,存活周期就是这次请求,一直到teardown)
            g.user=user

在这里,我们将钩子函数应用到蓝图上,那么在每次进入个人中心都需要进行登录,并且使用到了g对象,g对象和session的区别:session对象是可以跨request的,只要session还未失效,不同的request的请求会获取到同一个session,但是g对象不是,g对象不需要管过期时间,请求一次就g对象就改变了一次,或者重新赋值了一次。
ok!功能已经完成!
在这里插入图片描述
到这里,钩子函数作用以及使用方法教学就完成了。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

没有对象类

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值