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中zfill()方法的使用教程
May 20 Python
详解python时间模块中的datetime模块
Jan 13 Python
使用Python来开发Markdown脚本扩展的实例分享
Mar 04 Python
Python实现递归遍历文件夹并删除文件
Apr 18 Python
视觉直观感受若干常用排序算法
Apr 13 Python
推荐10款最受Python开发者欢迎的Python IDE
Sep 16 Python
python多线程同步实例教程
Aug 11 Python
win7下 python3.6 安装opencv 和 opencv-contrib-python解决 cv2.xfeatures2d.SIFT_create() 的问题
Oct 24 Python
使用keras时input_shape的维度表示问题说明
Jun 29 Python
编写python程序的90条建议
Apr 14 Python
matlab xlabel位置的设置方式
May 21 Python
Python机器学习之基于Pytorch实现猫狗分类
Jun 08 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
php写入数据到CSV文件的方法
2015/03/14 PHP
php实现图片缩略图的方法
2016/03/29 PHP
Yii支持多域名cors原理的实现
2018/12/05 PHP
PHP使用反向Ajax技术实现在线客服系统详解
2019/07/01 PHP
laravel 多图上传及图片的存储例子
2019/10/14 PHP
在laravel5.2中实现点击用户头像更改头像的方法
2019/10/14 PHP
Yii实现微信公众号场景二维码的方法实例
2020/08/30 PHP
jquery学习笔记二 实现可编辑的表格
2010/04/09 Javascript
jquery 单击li防止重复加载的实现代码
2010/12/24 Javascript
iframe调用父页面函数示例详解
2014/07/17 Javascript
jQuery的load()方法及其回调函数用法实例
2015/03/25 Javascript
jQuery简单实现遍历数组的方法
2015/04/14 Javascript
jQuery控制文本框只能输入数字和字母及使用方法
2016/05/26 Javascript
关于javascript原型的修改与重写(覆盖)差别详解
2016/08/31 Javascript
BootStrap表单宽度设置方法
2017/03/10 Javascript
vue小图标favicon不显示的解决方案
2017/09/19 Javascript
使用store来优化React组件的方法
2017/10/23 Javascript
解决vue数组中对象属性变化页面不渲染问题
2018/08/09 Javascript
浅析js实现网页截图的两种方式
2019/11/01 Javascript
js实现点击按钮随机生成背景颜色
2020/09/05 Javascript
Vue实现购物小球抛物线的方法实例
2020/11/22 Vue.js
[02:05]2014DOTA2西雅图邀请赛 专访啸天mik夫妻档
2014/07/08 DOTA
对python数据切割归并算法的实例讲解
2018/12/12 Python
python图像处理入门(一)
2019/04/04 Python
Python高级特性之闭包与装饰器实例详解
2019/11/19 Python
HTML5 Canvas鼠标与键盘事件demo示例
2013/07/04 HTML / CSS
李宁官方网店:中国运动品牌
2017/11/02 全球购物
世界上最大的糖果店:Dylan’s Candy Bar
2017/11/07 全球购物
澳大利亚现代波西米亚风格女装网站:Bohemian Traders
2018/04/16 全球购物
澳大利亚婴儿、幼儿和儿童在线设计师商店:Smooch Baby
2019/02/16 全球购物
说出一些常用的类,包,接口
2014/09/22 面试题
校三好学生主要事迹
2014/01/11 职场文书
中国梦团日活动总结
2014/07/07 职场文书
人身损害赔偿协议书范本
2014/09/27 职场文书
综合素质评价个性与发展自我评价
2015/03/06 职场文书
HTML5基础学习之文本标签控制
2022/03/25 HTML / CSS