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 SDK写一个同步脚本及使用教程
Aug 23 Python
Python数组遍历的简单实现方法小结
Apr 27 Python
python爬虫入门教程--利用requests构建知乎API(三)
May 25 Python
Pandas 同元素多列去重的实例
Jul 03 Python
python特性语法之遍历、公共方法、引用
Aug 08 Python
Python中logging.NullHandler 的使用教程
Nov 29 Python
解决python中无法自动补全代码的问题
Dec 04 Python
python读取csv和txt数据转换成向量的实例
Feb 12 Python
在OpenCV里实现条码区域识别的方法示例
Dec 04 Python
Python实现清理微信僵尸粉功能示例【基于itchat模块】
May 29 Python
Python语言编写智力问答小游戏功能
Oct 13 Python
Python实现Hash算法
Mar 18 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
关于使用key/value数据库redis和TTSERVER的心得体会
2013/06/28 PHP
php去除字符串换行符示例分享
2014/02/13 PHP
php文件服务实现虚拟挂载其他目录示例
2014/04/17 PHP
Symfony2开发之控制器用法实例分析
2016/02/05 PHP
PHP脚本自动识别验证码查询汽车违章
2016/12/20 PHP
基于PHP实现用户登录注册功能的详细教程
2020/08/04 PHP
Javascript开发包大全整理
2006/12/22 Javascript
JS两种定义方式的区别、内部原理
2013/11/21 Javascript
js字符串日期yyyy-MM-dd转化为date示例代码
2014/03/06 Javascript
javascript省市区三级联动下拉框菜单实例演示
2015/11/29 Javascript
jQuery组件easyui对话框实现代码
2016/08/25 Javascript
微信小程序 触控事件详细介绍
2016/10/17 Javascript
Angular.js实现多个checkbox只能选择一个的方法示例
2017/02/24 Javascript
Bootstrap 网格系统布局详解
2017/03/19 Javascript
详解Vue 动态添加模板的几种方法
2017/04/25 Javascript
highcharts 在angular中的使用示例代码
2017/09/20 Javascript
jQuery实现左右滑动的toggle方法
2018/03/03 jQuery
js实现网页随机验证码
2020/10/19 Javascript
原生JavaScript实现五子棋游戏
2020/11/09 Javascript
[40:17]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第一场
2018/04/06 DOTA
在Python的框架中为MySQL实现restful接口的教程
2015/04/08 Python
英国高档时尚男装购物网站:MR PORTER
2016/08/09 全球购物
Wedgwood美国官网:英国骨瓷,精美礼品及家居装饰
2018/02/17 全球购物
SQL SERVER面试资料
2013/03/30 面试题
为什么UNION ALL比UNION快
2016/03/17 面试题
校园安全教育广播稿
2014/02/17 职场文书
上课看小说检讨书
2014/02/22 职场文书
2014年园林绿化工作总结
2014/12/11 职场文书
大国崛起英国观后感
2015/06/02 职场文书
在职证明格式样本
2015/06/15 职场文书
房屋质量投诉书
2015/07/02 职场文书
Python3 多线程(连接池)操作MySQL插入数据
2021/06/09 Python
MySQL系列之八 MySQL服务器变量
2021/07/02 MySQL
利用python做数据拟合详情
2021/11/17 Python
python 判断文件或文件夹是否存在
2022/03/18 Python
html解决浏览器记住密码输入框的问题
2023/05/07 HTML / CSS