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

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

函数视图实现

from flask import Flask, render_template, requestfrom functools import wrapsapp = 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_requireddef setting():    return ‘设置页‘

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

如:以上面那个案例修改

from flask import Flask, render_template, request, viewsfrom functools import wrapsapp = 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 wrapperclass 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

时间: 2024-07-31 00:11:05

二十五:视图之类视图中使用装饰器的相关文章

iOS 11开发教程(二十)iOS11应用视图美化按钮之设置按钮的状态

iOS 11开发教程(二十)iOS11应用视图美化按钮之设置按钮的状态 在示例2-2中,设置按钮的标题和颜色时,需要对按钮的状态进行设置,表示按钮在某一状态下的标题和标题颜色是什么样子.例如,UIControlState.normal就表示按钮的一种状态.对于像按钮的这类视图,即可以接受用户输入的视图也被称为控件.这些控件都有自己的状态.表2-2就为开发者详细介绍了控件的状态. 表2-2  控件的状态   原文地址:https://www.cnblogs.com/daxueba-ITdaren/

【管理心得之二十五】组织中的骂名 ----------墙头草

场景再现 ====================== {会议前} 老张:喂,老王.这次的讨论议题你怎么看? 老王:暂时还没有想好,你有什么高见? 老张:这还不简单,以前类似的事发生过. "首先..........其次..........最后........."   你看看怎样? 老王:嗯{点点头} {会议中} 老  张:"方案A 是... ... ... ... " 方案B:"方案B 是... ... ... ... " 方案C:"方

ActionScript3游戏中的图像编程(连载二十五)

2.1.2 斜面和浮雕样式的制作 现在的文字看起来更像是一张漂浮于半空的小纸片,略显单薄.下面的图层模式中,名字看起来比较有立体感的选项要数“斜面和浮雕”了,我们点一下看看.(图 2.4) 图 2.4 给文字添加斜面和浮雕样式 文字凸起来了,如果觉得有点厚,不好看,怎么办?从上往下看,大小这个属性似乎最容易理解,它大概代表斜面的尺寸.我把大小调整到3,文字确实变薄了.(图 2.5) 图 2.5 斜面大小设置为3的效果 ActionScript3游戏中的图像编程(连载二十五)

Android学习笔记二十五之ListView多布局实现

Android学习笔记二十五之ListView多布局实现 这一节是介绍ListView这个控件的最后一节,实现一个Item的多布局.像我们经常在用的各种即时通讯工具,QQ.微信等,假设他们的会话界面是ListView实现的,那么ListView就有多种Item布局,这一节,我们就来实现一个ListView的多种Item. 要实现ListView里面有多种Item,就要重写适配器的两个方法getViewTypeCount()和getItemViewType(int position),第一个方法是

angular学习笔记(二十八-附2)-$resource中的promise对象

下面这种promise的用法,我从第一篇$http笔记到$resource笔记中,一直都有用到: HttpREST.factory('cardResource',function($resource){ return $resource('/card/user/:userID/:id',{userID:123,id:'@id'},{charge:{method:'POST',params:{charge:true},isArray:false}}) }); HttpREST.factory('h

angular学习笔记(二十八-附1)-$resource中的资源的方法

通过$resource获取到的资源,或者是通过$resource实例化的资源,资源本身就拥有了一些方法,比如$save,可以直接调用来保存该资源: 比如有一个$resource创建的服务: var service = angular.module('myRecipe.service',['ngResource']); service.factory('Recipe',['$resource',function($resource){ return $resource('/recipe/:id',

攻城狮在路上(叁)Linux(二十五)--- linux内存交换空间(swap)的构建

swap的功能是应付物理内存不足的状况,用硬盘来暂时放置内存中的信息. 对于一般主机,物理内存都差不多够用,所以也就不会用到swap,但是对于服务器而言,当遇到大量网络请求时或许就会用到. 当swap被使用的时候,主机的硬盘灯就会闪烁不停. 本篇介绍两种方式:1.设置一个swap分区   2.创建一个虚拟内存的文件. 一.使用物理分区构建swap: 1.首先是分区: A.fdisk /dev/sda; <== 根据后续提示创建一个分区. B.修改分区的ID,因为fdisk默认将分区的ID作为文件

关于心理的二十五种倾向(查理&amp;#183;芒格)-2

5)避免不一致倾向避免不一致倾向实际上就是人天生就害怕改变.相同是由于人类大脑的生理机制决定的.由于这样的倾向能够带来节省运算空间和能量的优点.这样的抗改变模式的形成,可能的原因例如以下:A) 迅速作出决定对生存来说至关重要,而这样的抗改变模式有助于更快的作出决定;     这里有第四个倾向的因素,对于生存至关重要的反应(遇到生存威胁时),反应一定要快,必须形成固化的模式.这也是我们对于紧急事件的处理常常採用不断反复模拟训练的原因.B) 能够通过群体协作来获得生存优势,假设每一个人总是不停地改变

二十五、防止表单重复提交

二十五.防止表单重复提交 防止表单重复提交: 有两种方式: 利用重定向<result type = "redirect"/> 使用拦截器 编写jsp页面 <s:form action="regist"> ????????<s:textfield name="name" label="姓名"></s:textfield> ????????<s:token/> ?????