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自动生成文章
Dec 25 Python
使用python实现knn算法
Dec 20 Python
批量将ppt转换为pdf的Python代码 只要27行!
Feb 26 Python
python中int与str互转方法
Jul 02 Python
python中的&&及||的实现示例
Aug 07 Python
python二分法查找算法实现方法【递归与非递归】
Dec 06 Python
手动安装python3.6的操作过程详解
Jan 13 Python
python lambda函数及三个常用的高阶函数
Feb 05 Python
python图形界面开发之wxPython树控件使用方法详解
Feb 24 Python
Python实现删除某列中含有空值的行的示例代码
Jul 20 Python
Python fileinput模块如何逐行读取多个文件
Oct 05 Python
python实现双链表
May 25 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
世界咖啡生产者论坛呼吁:需要立即就咖啡价格采取认真行动
2021/03/06 咖啡文化
PHP的ASP防火墙
2006/10/09 PHP
dedecms 制作模板中使用的全局标记图文教程
2007/03/11 PHP
让CodeIgniter数据库缓存自动过期的处理的方法
2014/06/12 PHP
PHP基于单例模式实现的数据库操作基类
2016/01/15 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
javascript jQuery插件练习
2008/12/24 Javascript
js 浮动层菜单收藏
2009/01/16 Javascript
URL地址中的#符号使用说明
2011/02/12 Javascript
简单的Jquery全选功能
2013/11/07 Javascript
jQuery 1.9使用$.support替代$.browser的使用方法
2014/05/27 Javascript
手写的一个兼容各种浏览器的javascript getStyle函数(获取元素的样式)
2014/06/06 Javascript
前端轻量级MVC框架CanJS详解
2014/09/26 Javascript
Node.js中,在cmd界面,进入退出Node.js运行环境的方法
2018/05/12 Javascript
vue项目中跳转到外部链接的实例讲解
2018/09/20 Javascript
更强大的vue ssr实现预取数据的方式
2019/07/19 Javascript
vue移动端城市三级联动组件使用详解
2019/07/26 Javascript
js 根据对象数组中的属性进行排序实现代码
2019/09/12 Javascript
小程序实现点击tab切换左右滑动
2020/11/16 Javascript
[03:49]辉夜杯现场龙骑士COSER秀情商“我喜欢芬队!”
2015/12/27 DOTA
[01:12:53]完美世界DOTA2联赛PWL S2 Forest vs SZ 第一场 11.25
2020/11/26 DOTA
Python的Bottle框架中返回静态文件和JSON对象的方法
2015/04/30 Python
Python占用的内存优化教程
2019/07/28 Python
pytorch数据预处理错误的解决
2020/02/20 Python
Python关于反射的实例代码分享
2020/02/20 Python
HTML5录音实践总结(Preact)
2020/05/07 HTML / CSS
C#面试常见问题
2013/02/25 面试题
国际商务专业学生个人的自我评价
2013/09/28 职场文书
大学团支书的自我评价分享
2013/12/14 职场文书
建材投资建议书
2014/05/16 职场文书
个人剖析材料及整改措施
2014/10/07 职场文书
单位委托书
2014/10/15 职场文书
求职自我推荐信
2015/03/24 职场文书
电信营业员岗位职责
2015/04/14 职场文书
nginx proxy_cache 缓存配置详解
2021/03/31 Servers
使用Nginx搭载rtmp直播服务器的方法
2021/10/16 Servers