码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-11-05 00:35:59      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:use   rgs   import   src   自己实现   源码   定义   访问   mamicode   

 

对于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‘))

 

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

标签:use   rgs   import   src   自己实现   源码   定义   访问   mamicode   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!