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 14 Python
pycharm 使用心得(四)显示行号
Jun 05 Python
在Docker上开始部署Python应用的教程
Apr 17 Python
python实现在控制台输入密码不显示的方法
Jul 02 Python
解决python ogr shp字段写入中文乱码的问题
Dec 31 Python
详解python的四种内置数据结构
Mar 19 Python
python使用wxpy实现微信消息防撤回脚本
Apr 29 Python
用pycharm开发django项目示例代码
Jun 13 Python
Python实现计算对象的内存大小示例
Jul 10 Python
python3的UnicodeDecodeError解决方法
Dec 20 Python
Python实现隐马尔可夫模型的前向后向算法的示例代码
Dec 31 Python
如何在vscode中安装python库的方法步骤
Jan 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
全国FM电台频率大全 - 13 福建省
2020/03/11 无线电
把PHP安装为Apache DSO
2006/10/09 PHP
jQuery中的RadioButton,input,CheckBox取值赋值实现代码
2014/02/18 PHP
Laravel使用Queue队列的技巧汇总
2019/09/02 PHP
CLASS_CONFUSION JS混淆 全源码
2007/12/12 Javascript
js 浏览器事件介绍
2012/03/30 Javascript
jQuery基础知识小结
2014/12/22 Javascript
浅析在javascript中创建对象的各种模式
2016/05/06 Javascript
jQuery实现将div中滚动条滚动到指定位置的方法
2016/08/10 Javascript
js实现消息滚动效果
2017/01/18 Javascript
ES6中module模块化开发实例浅析
2017/04/06 Javascript
JavaScript实现简单评论功能
2017/08/17 Javascript
vue动态设置img的src路径实例
2018/09/18 Javascript
JS返回页面时自动回滚到历史浏览位置
2018/09/26 Javascript
Vue项目History模式404问题解决方法
2018/10/31 Javascript
vue+elementUI动态生成面包屑导航教程
2019/11/04 Javascript
详解微信小程序动画Animation执行过程
2020/09/23 Javascript
[06:23]2014DOTA2西雅图国际邀请赛 小组赛7月12日TOPPLAY
2014/07/12 DOTA
浅谈python中的getattr函数 hasattr函数
2016/06/14 Python
用python找出那些被“标记”的照片
2017/04/20 Python
Python对字符串实现去重操作的方法示例
2017/08/11 Python
Python利用multiprocessing实现最简单的分布式作业调度系统实例
2017/11/14 Python
浅谈python已知元素,获取元素索引(numpy,pandas)
2019/11/26 Python
Python应用实现双指数函数及拟合代码实例
2020/06/19 Python
Python RabbitMQ实现简单的进程间通信示例
2020/07/02 Python
小米旗下精品生活电商平台:小米有品
2018/12/18 全球购物
房地产销售大学生自我评价分享
2013/11/11 职场文书
任课老师推荐信范文
2013/11/24 职场文书
酒店总经理助理岗位职责
2014/02/01 职场文书
党员活动日总结
2014/05/05 职场文书
2014年销售工作总结范文
2014/12/01 职场文书
2014年新农村建设工作总结
2014/12/01 职场文书
2014小学教师年度考核工作总结
2014/12/03 职场文书
单位实习介绍信
2015/05/05 职场文书
2016中秋节问候语
2015/11/11 职场文书
springboot 自定义配置 解决Boolean属性不生效
2022/03/18 Java/Android