- 相關(guān)推薦
Python如何合并多個(gè)裝飾器?教你幾個(gè)小技巧
django程序,需要寫很多api,每個(gè)函數(shù)都需要幾個(gè)裝飾器,例如
復(fù)制代碼 代碼如下:
@csrf_exempt
@require_POST
def foo(request):
pass
既然那么多個(gè)方法都需要寫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ù)改寫成
復(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)文章:
教你家居如何插花小技巧08-23
該如何合并多個(gè)HTML 幫助文件09-18
excel合并多個(gè)文件的方法05-27
小編教你如何掌控黑白攝影的技巧方法06-13
租房裝飾小技巧10-03
教你幾個(gè)實(shí)用的SAT閱讀考試解題技巧12-28
紋繡過(guò)程的幾個(gè)小技巧09-11
演講時(shí)的幾個(gè)小技巧01-01
臥室墻面裝飾小技巧08-01