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 with用法实例
Apr 14 Python
在Python的一段程序中如何使用多次事件循环详解
Sep 07 Python
Python实现购物系统(示例讲解)
Sep 13 Python
Python批量更改文件名的实现方法
Oct 29 Python
Python中pip更新和三方插件安装说明
Jul 08 Python
Python重新加载模块的实现方法
Oct 16 Python
pycharm访问mysql数据库的方法步骤
Jun 18 Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
Dec 18 Python
TensorFLow 不同大小图片的TFrecords存取实例
Jan 20 Python
python文件编写好后如何实践
Jul 07 Python
Python3爬虫中Selenium的用法详解
Jul 10 Python
Python通过字典映射函数实现switch
Nov 06 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
MySQL GBK→UTF-8编码转换
2007/05/24 PHP
PHP中exec与system用法区别分析
2014/09/22 PHP
PHP自定义图片缩放函数实现等比例不失真缩放的方法
2016/08/19 PHP
浅析PHP类的反射来实现依赖注入过程
2018/02/06 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
PHP基于array_unique实现二维数组去重
2020/07/14 PHP
利用javascript中的call实现继承
2007/01/22 Javascript
关于IE BUG与字符串截取substr的解决办法
2013/04/10 Javascript
JavaScript语言核心数据类型和变量使用介绍
2013/08/23 Javascript
JS操作iframe里的dom(实例讲解)
2014/01/29 Javascript
jQuery Mobile框架中的表单组件基础使用教程
2016/05/17 Javascript
javascript时间戳和日期字符串相互转换代码(超简单)
2016/06/22 Javascript
JS实现含有中文字符串的友好截取功能分析
2017/03/13 Javascript
详解基于vue-cli优化的webpack配置
2017/11/06 Javascript
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
2018/05/28 Javascript
解决JS表单验证只有第一个IF起作用的问题
2018/12/04 Javascript
解决vuex数据异步造成初始化的时候没值报错问题
2019/11/13 Javascript
javascript中layim之查找好友查找群组
2021/02/06 Javascript
[09:59]DOTA2-DPC中国联赛2月7日Recap集锦
2021/03/11 DOTA
使用Python编写一个简单的tic-tac-toe游戏的教程
2015/04/16 Python
python对数组进行反转的方法
2015/05/20 Python
Python中第三方库Requests库的高级用法详解
2017/03/12 Python
Python XlsxWriter模块Chart类用法实例分析
2019/03/11 Python
pyqt5中动画的使用详解
2020/04/01 Python
python Scrapy框架原理解析
2021/01/04 Python
css3闪亮进度条效果实现思路及代码
2013/04/17 HTML / CSS
HTML5语音识别标签写法附图
2013/11/18 HTML / CSS
软件设计的目标是什么
2016/12/04 面试题
毕业生求职找工作的自我评价范文
2013/11/27 职场文书
2014年居委会工作总结
2014/12/09 职场文书
2015新员工试用期工作总结
2014/12/12 职场文书
环卫工人慰问信
2015/02/15 职场文书
土建施工员岗位职责
2015/04/11 职场文书
在校学生证明格式
2015/06/24 职场文书
Python list去重且保持原顺序不变的方法
2021/04/03 Python
Java并发编程之详解CyclicBarrier线程同步
2021/06/23 Java/Android