django程序,需要寫很多api,每個函數(shù)都需要幾個裝飾器,例如
代碼如下:
@csrf_exempt
@require_POST
def foo(request):
pass
既然那么多個方法都需要寫2個裝飾器,或者多個,有啥辦法把多個合并成一行呢?
上面的函數(shù)執(zhí)行過程應(yīng)該是
代碼如下:
csrf_exempt(require_POST(foo))
修改成
代碼如下:
def compose(*funs):
def deco(f):
for fun in reversed(funs):
f = fun(f)
return f
return deco
函數(shù)改寫成
代碼如下:
@compose(csrf_exempt, require_POST)
def foo(request):
pass
參考:
Can I combine two decorators into a single one in Python
新聞熱點
疑難解答
圖片精選