Python合并多个装饰器小技巧
更新时间:2015年04月28日 08:43:31 投稿:junjie
这篇文章主要介绍了Python合并多个装饰器小技巧,本文用改写调用函数的方式实现把多个装饰器合并成一行、一个函数来调用,需要的朋友可以参考下
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 pyautogui实现图片识别点击失败后重试功能
这篇文章主要介绍了python pyautogui实现图片识别点击失败后重试效果,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧2024-06-06
最新评论