首页 > 其他 > 详细

二十五:视图之类视图中使用装饰器

时间:2019-11-05 00:30:08      阅读:100      评论:0      收藏:0      [点我收藏+]

 

对于url的保护,一般是通过装饰器实现,如:某个页面需要登录后才能访问

 

函数视图实现

技术分享图片

技术分享图片

技术分享图片

from flask import Flask, render_template, request
from functools import wraps
app = Flask(__name__)
def login_required(func):
@wraps(func)
def wrapper(*args, **kwargs):
username = request.args.get(‘username‘)
return func(*args, **kwargs) if username == ‘aaa‘ else ‘请先登录‘
return wrapper
@app.route(‘/setting/‘)
@login_required
def setting():
return ‘设置页‘

类视图实现
类视图中的装饰器,需要重写类视图的一个类属性:decorators,这个列属性是列表或者元祖都可以,需要用多个装饰器时,按执行顺序放进去就行,会按里面的装饰器顺序执行,View中源码如下

技术分享图片

技术分享图片

 

如:以上面那个案例修改

技术分享图片

技术分享图片

技术分享图片

from flask import Flask, render_template, request, views
from functools import wraps
app = Flask(__name__)
def login_required(func):
@wraps(func)
def wrapper(*args, **kwargs):
username = request.args.get(‘username‘)
return func(*args, **kwargs) if username == ‘aaa‘ else ‘请先登录‘
return wrapper
class Setting(views.View):
decorators = [login_required] # 将自己实现的装饰器放在decorators的列表中即可,decorators为flask.views.View下定义的属性
def dispatch_request(self):
return ‘设置页‘
app.add_url_rule(‘/setting/‘, view_func=Setting.as_view(‘setting‘))

 

二十五:视图之类视图中使用装饰器

原文:https://www.cnblogs.com/zhongyehai/p/11795649.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!