python多个装饰器详解_Python合并多个装饰器小技巧

本文探讨如何通过compose函数将Django API中的多个装饰器合并为一行,提高代码简洁度,以@compose(csrf_exempt, require_POST)为例,详细介绍了实现原理和使用方法。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值