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构建Hopfield网络的教程
Apr 14 Python
Python基于动态规划算法计算单词距离
Jul 25 Python
Python实现获取照片拍摄日期并重命名的方法
Sep 30 Python
python如何读写json数据
Mar 21 Python
Python装饰器语法糖
Jan 02 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
Apr 09 Python
python 搜索大文件的实例代码
Jul 08 Python
Django CBV类的用法详解
Jul 26 Python
pytorch获取模型某一层参数名及参数值方式
Dec 30 Python
Python面向对象魔法方法和单例模块代码实例
Mar 25 Python
python3 循环读取excel文件并写入json操作
Jul 14 Python
python自动获取微信公众号最新文章的实现代码
Jul 15 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
Apache设置虚拟WEB
2006/10/09 PHP
全新的PDO数据库操作类php版(仅适用Mysql)
2012/07/22 PHP
浅析PHP程序设计中的MVC编程思想
2014/07/28 PHP
php+ajax实时刷新简单实例
2015/02/25 PHP
Yii2框架使用计划任务的方法
2016/05/25 PHP
让你的PHP,APACHE,NGINX支持大文件上传
2021/03/09 PHP
扩展jQuery 键盘事件的几个基本方法
2009/10/30 Javascript
原生javascript实现获取指定元素下所有后代元素的方法
2014/10/28 Javascript
jquery实现简单的自动播放幻灯片效果
2015/06/13 Javascript
详解Bootstrap的aria-label和aria-labelledby应用
2016/01/04 Javascript
学习vue.js计算属性
2016/12/03 Javascript
在javaScript中检测数据类型的几种方式小结
2017/03/04 Javascript
vue使用drag与drop实现拖拽的示例代码
2017/09/07 Javascript
axios拦截设置和错误处理方法
2018/03/05 Javascript
微信小程序实现时间预约功能
2018/11/27 Javascript
JS+HTML5本地存储Localstorage实现注册登录及验证功能示例
2020/02/10 Javascript
微信小程序学习总结(二)样式、属性、模板操作分析
2020/06/04 Javascript
[01:12:53]完美世界DOTA2联赛PWL S2 Forest vs SZ 第一场 11.25
2020/11/26 DOTA
Python Mysql自动备份脚本
2008/07/14 Python
简单文件操作python 修改文件指定行的方法
2013/05/15 Python
python实现排序算法
2014/02/14 Python
Python基于pygame模块播放MP3的方法示例
2017/09/30 Python
python+matplotlib绘制3D条形图实例代码
2018/01/17 Python
pandas数据处理基础之筛选指定行或者指定列的数据
2018/05/03 Python
Python 3.8正式发布,来尝鲜这些新特性吧
2019/10/15 Python
Python实现线性判别分析(LDA)的MATLAB方式
2019/12/09 Python
python线性插值解析
2020/07/05 Python
python爬虫scrapy框架之增量式爬虫的示例代码
2021/02/26 Python
初中科学教学反思
2014/01/21 职场文书
化学教学随笔感言
2014/02/19 职场文书
写得不错的求职信范文
2014/07/11 职场文书
2015国庆节66周年演讲稿
2015/03/20 职场文书
2015年学校精神文明工作总结
2015/05/27 职场文书
小学作文之描写天气
2019/08/15 职场文书
创业项目大全(适合在家创业的项目)
2019/08/15 职场文书
最新动漫情报:2022年7月新番定档超过30部, OVERLORD骨王第四季也在其中噢
2022/05/04 日漫