Flask高级视图_装饰器修饰视图
一.介绍
简言之,python装饰器就是用于拓展原来函数功能的一种函数,这 个函数的特殊之处在于它的返回值也是一个函数, 使用python装饰器的好处就是在不用更改原函数的代码前提下给函 数增加新的功能。
规则:
-
在视图函数中使用自定义装饰器,那么自己定义的装饰器必须放 在 app.route 下面。否则这个装饰器就起不到任何作用。
-
在类视图中使用装饰器,需要重写类视图的一个类属性 decorators , 这个类属性是一个列表或者元组都可以,里面装的就是所有的装饰 器。
二.实例
from flask import Flask,request
from functools import wraps
import logging
from flask.views import MethodView
logging.basicConfig(level=logging.INFO)
app = Flask(__name__)
def login_request(func):
@wraps(func)
def wrappers(*args,**kwargs):
uname = request.args.get('uname')
pwd = request.args.get('pwd')
if uname == 'NewBurLaSKing' and pwd == '666':
logging.info(f'{uname}:登录成功!!!')
return func(*args,**kwargs)
else:
logging.info(f'{uname}:登录失败!!!')
return '用户名或密码错误!!!'
return wrappers
@app.route('/show/')
@login_request
def show():
return 'Hello'
class loginView(MethodView):
decorators=[login_request]
def get(self):
return 'Hello'
app.add_url_rule('/login/',view_func=loginView.as_view('login'))
if __name__ == '__main__':
app.run(debug=True)
注:
如果觉得笔记有些问题,麻烦在百忙之中在评论中指正,或提出建议!另外,如果觉得这份笔记对你有所帮助,麻烦动动发财的小手手点一波赞!