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实现把utf-8格式的文件转换成gbk格式的文件
Jan 22 Python
详解Django中的ifequal和ifnotequal标签使用
Jul 16 Python
Python简单网络编程示例【客户端与服务端】
May 26 Python
Python中字典和集合学习小结
Jul 07 Python
Python基于回溯法子集树模板实现8皇后问题
Sep 01 Python
Python图形绘制操作之正弦曲线实现方法分析
Dec 25 Python
python中计算一个列表中连续相同的元素个数方法
Jun 29 Python
Python GUI编程完整示例
Apr 04 Python
python+webdriver自动化环境搭建步骤详解
Jun 03 Python
Pytorch 的损失函数Loss function使用详解
Jan 02 Python
图解Python中深浅copy(通俗易懂)
Sep 03 Python
Pyqt助手安装PyQt5帮助文档过程图解
Nov 20 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世纪万年历
2006/12/06 PHP
深入php内核之php in array
2015/11/10 PHP
详解WordPress开发中get_header()获取头部函数的用法
2016/01/08 PHP
Centos PHP 扩展Xchche的安装教程
2016/07/09 PHP
PHP与jquery实时显示网站在线人数实例详解
2016/12/02 PHP
详解php语言最牛掰的Laravel框架
2017/11/20 PHP
PHP的PDO大对象(LOBs)
2019/01/27 PHP
javascript 从if else 到 switch case 再到抽象
2010/07/17 Javascript
jQuery学习笔记(4)--Jquery中获取table中某列值的具体思路
2013/04/10 Javascript
左侧是表头的JS表格控件(自写,网上没有的)
2013/06/04 Javascript
jquery分割字符串的方法
2015/06/24 Javascript
JavaScript的jQuery库中function的存在和参数问题
2015/08/13 Javascript
基于JS2Image实现圣诞树代码
2015/12/24 Javascript
用JS实现轮播图效果(二)
2016/06/26 Javascript
微信小程序 教程之注册页面
2016/10/17 Javascript
浅谈Vue 初始化性能优化
2017/08/31 Javascript
Vue实战之vue登录验证的实现代码
2017/10/31 Javascript
如何去除vue项目中的#及其ie9兼容性
2018/01/11 Javascript
angularjs手动识别字符串中的换行符方法
2018/10/02 Javascript
python模拟Django框架实例
2016/05/17 Python
Python中的字符串查找操作方法总结
2016/06/27 Python
Python基于高斯消元法计算线性方程组示例
2018/01/17 Python
Python3正则匹配re.split,re.finditer及re.findall函数用法详解
2018/06/11 Python
对pycharm代码整体左移和右移缩进快捷键的介绍
2018/07/16 Python
Python设计模式之观察者模式原理与用法详解
2019/01/16 Python
python数组循环处理方法
2019/08/26 Python
10个Python面试常问的问题(小结)
2019/11/20 Python
解决django中form表单设置action后无法回到原页面的问题
2020/03/13 Python
Python操控mysql批量插入数据的实现方法
2020/10/27 Python
美国礼品卡交易网站:Cardpool
2018/08/27 全球购物
中专自荐信
2013/10/13 职场文书
医学院学生的自我评价分享
2013/11/19 职场文书
保密工作承诺书
2014/08/29 职场文书
工作态度不端正检讨书
2014/10/04 职场文书
pytorch显存一直变大的解决方案
2021/04/08 Python
MySQL数据库Innodb 引擎实现mvcc锁
2022/05/06 MySQL