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 相关文章推荐
Web服务器框架 Tornado简介
Jul 16 Python
Python3中常用的处理时间和实现定时任务的方法的介绍
Apr 07 Python
在主机商的共享服务器上部署Django站点的方法
Jul 22 Python
python 打印对象的所有属性值的方法
Sep 11 Python
Python升级导致yum、pip报错的解决方法
Sep 06 Python
基于Python 装饰器装饰类中的方法实例
Apr 21 Python
pybind11在Windows下的使用教程
Jul 04 Python
twilio python自动拨打电话,播放自定义mp3音频的方法
Aug 08 Python
在python中利用dict转json按输入顺序输出内容方式
Feb 27 Python
python如何进行矩阵运算
Jun 05 Python
Keras-多输入多输出实例(多任务)
Jun 22 Python
PyQt5结合matplotlib绘图的实现示例
Sep 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
twig模板获取全局变量的方法
2016/02/05 PHP
PHP示例演示发送邮件给某个邮箱
2019/04/03 PHP
Yii框架数据库查询、增加、删除操作示例
2019/10/14 PHP
PHP xpath提取网页数据内容代码解析
2020/07/16 PHP
统一接口:为FireFox添加IE的方法和属性的js代码
2007/03/25 Javascript
jQuery防止click双击多次提交及传递动态函数或多参数
2014/04/02 Javascript
抛弃Nginx使用nodejs做反向代理服务器
2014/07/17 NodeJs
学习JavaScript设计模式之迭代器模式
2016/01/19 Javascript
jQuery的extend方法【三种】
2016/12/14 Javascript
利用node.js爬取指定排名网站的JS引用库详解
2017/07/25 Javascript
基于BootStrap multiselect.js实现的下拉框联动效果
2017/07/28 Javascript
关于Angularjs中自定义指令一些有价值的细节和技巧小结
2018/04/22 Javascript
vue+高德地图写地图选址组件的方法
2019/05/18 Javascript
js实现鼠标滑动到某个div禁止滚动
2020/09/17 Javascript
JS实现简单贪吃蛇小游戏
2020/10/28 Javascript
新手如何快速入门Python(菜鸟必看篇)
2017/06/10 Python
详解Python之unittest单元测试代码
2018/01/24 Python
python操作mysql代码总结
2018/06/01 Python
浅谈python中对于json写入txt文件的编码问题
2018/06/07 Python
详解Python文件修改的两种方式
2019/08/22 Python
python 中Arduino串口传输数据到电脑并保存至excel表格
2019/10/14 Python
python全局变量引用与修改过程解析
2020/01/07 Python
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
2020/01/10 Python
用python对oracle进行简单性能测试
2020/12/05 Python
世界上最大的各式箱包网络零售店:eBag
2016/07/21 全球购物
波比布朗英国官网:Bobbi Brown英国
2017/11/13 全球购物
C#软件工程师英语面试题
2015/06/07 面试题
仓库管理专业个人自我评价范文
2013/11/11 职场文书
财务方面个人工作的自我评价
2013/12/28 职场文书
市场专员岗位职责
2014/02/14 职场文书
客户经理竞聘演讲稿
2014/05/15 职场文书
银行竞聘演讲稿
2014/05/16 职场文书
国庆65周年演讲稿:回首往昔,展望未来
2014/09/21 职场文书
民主评议党员登记表自我评价
2014/10/20 职场文书
公司年夜饭通知
2015/04/25 职场文书
Mysql忘记密码解决方法
2022/02/12 MySQL