- 相關(guān)推薦
Python如何合并多個(gè)裝飾器?教你幾個(gè)小技巧
django程序,需要寫(xiě)很多api,每個(gè)函數(shù)都需要幾個(gè)裝飾器,例如
復(fù)制代碼 代碼如下:
@csrf_exempt
@require_POST
def foo(request):
pass
既然那么多個(gè)方法都需要寫(xiě)2個(gè)裝飾器,或者多個(gè),有啥辦法把多個(gè)合并成一行呢?
上面的函數(shù)執(zhí)行過(guò)程應(yīng)該是
復(fù)制代碼 代碼如下:
csrf_exempt(require_POST(foo))
修改成
復(fù)制代碼 代碼如下:
def compose(*funs):
def deco(f):
for fun in reversed(funs):
f = fun(f)
return f
return deco
函數(shù)改寫(xiě)成
復(fù)制代碼 代碼如下:
@compose(csrf_exempt, require_POST)
def foo(request):
pass
參考:
Can I combine two decorators into a single one in Python
【Python如何合并多個(gè)裝飾器?教你幾個(gè)小技巧】相關(guān)文章:
教你如何學(xué)好工程制圖12-07
教你實(shí)用的社交口才技巧09-24
教你如何屏蔽硬盤(pán)壞道07-16
打網(wǎng)球的幾個(gè)小細(xì)節(jié)05-09
插花的幾個(gè)基本技巧(通用7篇)06-10
軍訓(xùn)小技巧10-13
登山教你如何正確選擇登山杖10-21
液晶顯示器保養(yǎng)技巧07-16
日常卸妝小技巧09-03
新生軍訓(xùn)小技巧09-28