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 相关文章推荐
Django中模版的子目录与include标签的使用方法
Jul 16 Python
最近Python有点火? 给你7个学习它的理由!
Jun 26 Python
Python 12306抢火车票脚本
Feb 07 Python
Python matplotlib 画图窗口显示到gui或者控制台的实例
May 24 Python
python3爬虫之设计签名小程序
Jun 19 Python
python设置值及NaN值处理方法
Jul 03 Python
详解如何在Apache中运行Python WSGI应用
Jan 02 Python
Django如何开发简单的查询接口详解
May 17 Python
用Python实现二叉树、二叉树非递归遍历及绘制的例子
Aug 09 Python
Python reshape的用法及多个二维数组合并为三维数组的实例
Feb 07 Python
Macbook安装Python最新版本、GUI开发环境、图像处理、视频处理环境详解
Feb 17 Python
Python实现简单猜数字游戏
Feb 03 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/02 无线电
PHP实现多服务器session共享之NFS共享的方法
2007/03/16 PHP
php微信公众平台开发类实例
2015/04/01 PHP
php+ajax实现商品对比功能示例
2019/04/13 PHP
javascript的函数
2007/01/31 Javascript
js中如何把字符串转化为对象、数组示例代码
2013/07/17 Javascript
Jquery如何实现点击时高亮显示代码
2014/01/22 Javascript
JavaScript获得url查询参数的方法
2015/07/02 Javascript
javascript实现根据3原色制作颜色选择器的方法
2015/07/17 Javascript
javascript的几种写法总结
2016/09/30 Javascript
ReactJs设置css样式的方法
2017/06/08 Javascript
JavaScript之underscore_动力节点Java学院整理
2017/07/03 Javascript
JS实现的简单标签点击切换功能示例
2017/09/21 Javascript
python爬取安居客二手房网站数据(实例讲解)
2017/10/19 Javascript
Vue+webpack项目基础配置教程
2018/02/12 Javascript
Vue中使用webpack别名的方法实例详解
2018/06/19 Javascript
iview的table组件自带的过滤器实现
2019/07/12 Javascript
javascript 设计模式之组合模式原理与应用详解
2020/04/08 Javascript
[02:23]1个至宝=115个英雄特效 最“绿”至宝拉比克“魔导师密钥”登场
2018/12/29 DOTA
Python代码的打包与发布详解
2014/07/30 Python
python Flask实现restful api service
2017/12/04 Python
利用python为运维人员写一个监控脚本
2018/03/25 Python
opencv3/Python 稠密光流calcOpticalFlowFarneback详解
2019/12/11 Python
python字典和json.dumps()的遇到的坑分析
2020/03/11 Python
详解HTML5表单新增属性
2016/12/21 HTML / CSS
HTML5页面音视频在微信和app下自动播放的实现方法
2016/10/20 HTML / CSS
加拿大最大的钻石商店:Peoples Jewellers
2018/01/01 全球购物
初中政治教学反思
2014/01/17 职场文书
浙大毕业生自荐信
2014/01/26 职场文书
销售内勤岗位职责
2015/02/10 职场文书
大学生社会服务心得体会
2016/01/22 职场文书
2016年第十四个公民道德宣传日活动总
2016/04/01 职场文书
网络安全倡议书(3篇)
2019/09/18 职场文书
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
2021/11/11 Python
千万级用户系统SQL调优实战分享
2022/03/03 MySQL
Java实现字符串转为驼峰格式的方法详解
2022/07/07 Java/Android