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 24 Python
Python MySQLdb模块连接操作mysql数据库实例
Apr 08 Python
不同版本中Python matplotlib.pyplot.draw()界面绘制异常问题的解决
Sep 24 Python
Python实现的将文件每一列写入列表功能示例【测试可用】
Mar 19 Python
浅谈Python中重载isinstance继承关系的问题
May 04 Python
Scrapy基于selenium结合爬取淘宝的实例讲解
Jun 13 Python
详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
Oct 09 Python
Python之NumPy(axis=0 与axis=1)区分详解
May 27 Python
Python 取numpy数组的某几行某几列方法
Oct 24 Python
Python生成器常见问题及解决方案
Mar 21 Python
在Keras中CNN联合LSTM进行分类实例
Jun 29 Python
python mock测试的示例
Oct 19 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 抽象类的简单应用
2011/09/06 PHP
php 无限级分类,超级简单的无限级分类,支持输出树状图
2014/06/29 PHP
php使用fopen创建utf8编码文件的方法
2014/10/31 PHP
PHP针对JSON操作实例分析
2015/01/12 PHP
PHP数组操作类实例
2015/07/11 PHP
JAVASCRIPT HashTable
2007/01/22 Javascript
javascript实现面向对象类的功能书写技巧
2010/03/07 Javascript
jQuery产品间断向下滚动效果核心代码
2014/05/08 Javascript
javascript ajax的5种状态介绍
2014/08/18 Javascript
JavaScript实现控制打开文件另存为对话框的方法
2015/04/17 Javascript
jquery实现的点击翻书效果代码
2015/11/04 Javascript
两种简单的跨域方法(jsonp、php)
2017/01/02 Javascript
js实现二级导航功能
2017/03/03 Javascript
javaScript手机号码校验工具类PhoneUtils详解
2017/12/08 Javascript
vue 1.0 结合animate.css定义动画效果
2018/07/11 Javascript
微信小程序自定义组件的实现方法及自定义组件与页面间的数据传递问题
2018/10/09 Javascript
监听angularJs列表数据是否渲染完毕的方法示例
2018/11/07 Javascript
详解vue中async-await的使用误区
2018/12/05 Javascript
webpack4.0+vue2.0利用批处理生成前端单页或多页应用的方法
2019/06/28 Javascript
Python计算三维矢量幅度的方法
2015/06/15 Python
使用python编写udp协议的ping程序方法
2018/04/22 Python
解决Python3 抓取微信账单信息问题
2019/07/19 Python
python如何提取英语pdf内容并翻译
2020/03/03 Python
详解django使用include无法跳转的解决方法
2020/03/19 Python
Python退出时强制运行一段代码的实现方法
2020/04/29 Python
CSS3中几个新增加的盒模型属性使用教程
2016/03/01 HTML / CSS
Theflamel意大利:女士奢华服装、鞋子和配件
2020/01/11 全球购物
物业管理求职自荐信
2013/09/25 职场文书
中专生自我鉴定
2013/12/17 职场文书
2014大学生中国梦主题教育学习思想汇报
2014/09/10 职场文书
《微笑着面对生活》优秀演讲稿范文
2014/09/23 职场文书
简单的离婚协议书范本
2014/11/16 职场文书
解决goland 导入项目后import里的包报红问题
2021/05/06 Golang
Python Pandas知识点之缺失值处理详解
2021/05/11 Python
CSS实现隐藏搜索框功能(动画正反向序列)
2021/07/21 HTML / CSS
【海涛解说】pis亲自推荐,其实你从来不会玩NW
2022/04/01 DOTA