Python合并多个装饰器小技巧


Posted in Python onApril 28, 2015

django程序,需要写很多api,每个函数都需要几个装饰器,例如

@csrf_exempt  

@require_POST  

def  foo(request):  

    pass 

既然那么多个方法都需要写2个装饰器,或者多个,有啥办法把多个合并成一行呢?
上面的函数执行过程应该是
csrf_exempt(require_POST(foo)) 

修改成
def compose(*funs):  

    def deco(f):  

        for fun in reversed(funs):  

            f = fun(f)  

        return f  

    return deco
 
函数改写成
@compose(csrf_exempt, require_POST)  

def foo(request):  

    pass 

参考:
Can I combine two decorators into a single one in Python

Python 相关文章推荐
python异步任务队列示例
Apr 01 Python
Python datetime时间格式化去掉前导0
Jul 31 Python
利用Psyco提升Python运行速度
Dec 24 Python
python实现统计代码行数的方法
May 22 Python
python实现下载文件的三种方法
Feb 09 Python
python爬虫实现教程转换成 PDF 电子书
Feb 19 Python
解决pandas.DataFrame.fillna 填充Nan失败的问题
Nov 06 Python
numpy.meshgrid()理解(小结)
Aug 01 Python
基于python3生成标签云代码解析
Feb 18 Python
Django启动时找不到mysqlclient问题解决方案
Nov 11 Python
python爬虫如何解决图片验证码
Feb 14 Python
Python中Permission denied的解决方案
Apr 02 Python
查看Python安装路径以及安装包路径小技巧
Apr 28 #Python
Python中获取对象信息的方法
Apr 27 #Python
用实例解释Python中的继承和多态的概念
Apr 27 #Python
Python中设置变量访问权限的方法
Apr 27 #Python
理解Python中的类与实例
Apr 27 #Python
简述Python中的面向对象编程的概念
Apr 27 #Python
介绍Python中的__future__模块
Apr 27 #Python
You might like
PHP获取网站域名和地址的代码
2008/08/17 PHP
php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法
2015/11/30 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
学习YUI.Ext第五日--做拖放Darg&Drop
2007/03/10 Javascript
javascript dom 操作详解 js加强
2009/07/13 Javascript
自己实现string的substring方法 人民币小写转大写,数字反转,正则优化
2012/09/02 Javascript
js打开windows上的可执行文件示例
2014/05/27 Javascript
两种JS实现屏蔽鼠标右键的方法
2020/08/20 Javascript
jQuery超简单选项卡完整实例
2015/09/26 Javascript
js捕捉键盘事件和按键键值的方法
2016/10/10 Javascript
Javascript动画效果(1)
2016/10/11 Javascript
canvas仿iwatch时钟效果
2017/03/06 Javascript
Nodejs+angularjs结合multiparty实现多图片上传的示例代码
2017/09/29 NodeJs
关于vue中的ajax请求和axios包问题
2018/04/19 Javascript
在axios中使用params传参的时候传入数组的方法
2018/09/25 Javascript
uni app仿微信顶部导航条功能
2019/09/17 Javascript
countup.js实现数字动态叠加效果
2019/10/17 Javascript
微信小程序实现多选框全选与反全选及购物车中删除选中的商品功能
2019/12/17 Javascript
微信小程序开发打开另一个小程序的实现方法
2020/05/17 Javascript
使用beaker让Facebook的Bottle框架支持session功能
2015/04/23 Python
Python按行读取文件的实现方法【小文件和大文件读取】
2016/09/19 Python
python爬取淘宝商品详情页数据
2018/02/23 Python
Tensorflow 训练自己的数据集将数据直接导入到内存
2018/06/19 Python
flask中过滤器的使用详解
2018/08/01 Python
python从zip中删除指定后缀文件(推荐)
2019/12/05 Python
Python写出新冠状病毒确诊人数地图的方法
2020/02/12 Python
python为什么会环境变量设置不成功
2020/06/23 Python
几款好用的python工具库(小结)
2020/10/20 Python
html5 兼容IE6结构的实现代码
2012/05/14 HTML / CSS
服务员自我评价
2014/01/25 职场文书
群众路线领导对照材料
2014/08/23 职场文书
实习生辞职信范文
2015/03/02 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
留学推荐信中文范文
2015/03/26 职场文书
实体类或对象序列化时,忽略为空属性的操作
2021/06/30 Java/Android
VMware虚拟机安装 Windows Server 2022的详细图文教程
2022/09/23 Servers