Flask框架之类视图中使用装饰器

类视图中使用装饰器

简言之,python装饰器就是用于拓展【原来函数功能】的一种函数,这个【函数的特殊之处在于它的返回值也是一个函数。

使用python装饰器的 【好处】就是在不用更改原函数的代码前提下给函数增加新的功能。


在视图函数中使用

在视图函数中使用自定义装饰器,那么自己定义的装饰器必须放在app.route下面。否则这个装饰器就起不到任何作用。

需求:
查看设置个人信息时,只有检测到用户已经登录了才能查看,若没有登录,则无法查看并给出提示信息。

定义一个装饰器


def login_requierd(func):
	#为保证参数的安全,可以加上@wraps装饰器
	#需要从functools中导入wraps
    @wraps(func)
    def wrapper(*args,**kwargs):
        username = request.args.get("username")
        if username and username =='wukong':
             return func(*args,**kwargs)
        else:
            return  '请先登录'
    return wrapper
    

使用自定义装饰器


@app.route('/settings/')
@login_requierd
def settings():
    return '这是设置界面'
    

在类视图中使用

在类视图中使用装饰器,需要重写类视图的一个类属性decorators,这个类属性是一个列表或者元组都可以,里面装的就是所有的装饰器。

需求:
查看设置个人信息时,只有检测到用户已经登录了才能查看,若没有登录,则无法查看并给出提示信息。

定义一个装饰器


def login_requierd(func):
	#为保证参数的安全,可以加上@wraps装饰器
	#需要从functools中导入wraps
    @wraps(func)
    def wrapper(*args,**kwargs):
        username = request.args.get("username")
        if username and username =='wukong':
             return func(*args,**kwargs)
        else:
            return  '请先登录'
    return wrapper
 

使用自定义装饰器:


class  ProfileView(views.View):
    decorators = [login_requierd]
    def dispatch_request(self):
        return '这是个人中心界面'

app.add_url_rule('/profile/',view_func=ProfileView.as_view('profile'))
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值