web项目026-----装饰器的定义

装饰器的定义

首先我们思考,我们应该以什么样的一个状态进入到这个界面

肯定不能是直接输入my.html

我们应该以登陆的状态进入到这个界面,不登录不能进

我们需要做一个这个功能,验证用户是否登陆,如果没有登陆就跳转到登陆页面

我们需要自己定义一个装饰器

在commons.py中定义我们的装饰器,因为他和业务逻辑没有关系,是一个自定义工具,所以我们放到了utils文件中的commons.py文件中

我们把user_id保存到全局的g对象中,不存也可以,在session中取也行

我们在装饰器中再导入一个装饰器,functools

举个栗子

functools的作用就是保持原函数的属性

回归整体,这就是我们定义的装饰器

# view_func---被装饰的函数
def login_required(view_func):

    @functools.wraps(view_func)
    def wrapper(*args,**kwargs):
        # 判断用户的登陆状态,我们用user_id进行判断
        user_id = session.get('user_id')

        if user_id is not None:
            # 已登陆
            g.user_id = user_id
            return view_func(*args,**kwargs)
        else:
            # 未登录
            return jsonify(errno=RET.SESSIONERR,errmsg='用户未登陆')


    return wrapper

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值