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 01 Python
python实现向ppt文件里插入新幻灯片页面的方法
Apr 28 Python
基础的十进制按位运算总结与在Python中的计算示例
Jun 28 Python
利用python写个下载teahour音频的小脚本
May 08 Python
windows下Virtualenvwrapper安装教程
Dec 13 Python
pip matplotlib报错equired packages can not be built解决
Jan 06 Python
python爬虫爬取某站上海租房图片
Feb 04 Python
python实现实时视频流播放代码实例
Jan 11 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
Jan 25 Python
python实现学生信息管理系统(精简版)
Nov 27 Python
python使用scapy模块实现ping扫描的过程详解
Jan 21 Python
用python删除文件夹中的重复图片(图片去重)
May 12 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_odbc和php写的serach数据库程序
2006/10/09 PHP
PHPMailer 中文使用说明小结
2010/01/22 PHP
php设计模式 Chain Of Responsibility (职责链模式)
2011/06/26 PHP
WordPress主题中添加文章列表页页码导航的PHP代码实例
2015/12/22 PHP
优化 JavaScript 代码的方法小结
2009/07/16 Javascript
php的文件上传入门教程(实例讲解)
2014/04/10 Javascript
使表格的标题列可左右拉伸jquery插件封装
2014/11/24 Javascript
JavaScript DOM操作表格及样式
2015/04/13 Javascript
jQuery解析Json实例详解
2015/11/24 Javascript
js实现城市级联菜单的2种方法
2017/06/23 Javascript
js断点调试心得分享(必看篇)
2017/12/08 Javascript
JQuery实现table中tr上移下移的示例(超简单)
2018/01/08 jQuery
Vue中的无限加载vue-infinite-loading的方法
2018/04/08 Javascript
vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
2019/05/14 Javascript
为react组件库添加typescript类型提示的方法
2020/06/15 Javascript
Saltstack快速入门简单汇总
2016/03/01 Python
Python中with及contextlib的用法详解
2017/06/08 Python
python爬虫使用cookie登录详解
2017/12/27 Python
django 2.0更新的10条注意事项总结
2018/01/05 Python
python画出三角形外接圆和内切圆的方法
2018/01/25 Python
python3实现基于用户的协同过滤
2018/05/31 Python
python安装twisted的问题解析
2018/08/21 Python
python读取并写入mat文件的方法
2019/07/12 Python
Python lambda表达式filter、map、reduce函数用法解析
2019/09/11 Python
利用keras加载训练好的.H5文件,并实现预测图片
2020/01/24 Python
Python逐行读取文件内容的方法总结
2020/02/14 Python
Python实现打包成库供别的模块调用
2020/07/13 Python
欧洲著名的珠宝和手表网上商城:uhrcenter
2017/04/10 全球购物
纽约海:Sea New York
2018/11/04 全球购物
英国著名书店:Foyles
2018/12/01 全球购物
高二英语教学反思
2014/01/19 职场文书
单位推荐信范文
2015/03/27 职场文书
2015年专项整治工作总结
2015/04/03 职场文书
婚前协议书怎么写,才具有法律效力呢 ?
2019/06/28 职场文书
SQL 窗口函数实现高效分页查询的案例分析
2021/05/21 SQL Server
python机器学习实现oneR算法(以鸢尾data为例)
2022/03/03 Python