Django中裝飾器的使用方法


裝飾器的作用(簡而言之):讓其他函數在不需要做任何代碼變動的前提下增加額外的功能

FBV加裝飾器

例:以統計時間的裝飾器為例

def timer(func):
    def inner(*args, **kwargs):
        start = time.time()
        ret = func(*args, **kwargs)
        print('執行的時間是:{}'.format(time.time()-start))
        return ret
    return inner

其中:timer為裝飾器的名字(讀者可自定義);func為需要被裝飾的函數名字(一般寫這個);inner也是自定義,但習慣寫inner;*args, **kwargs為要被裝飾的函數參數。

使用方式:

@timer
def xx(request):
    ....

 即:在需要的方法上加 @timer即可。

 

CBV加裝飾器(共有3種方法,這里本人只列舉其中2種方法,但是夠了)

注:這里需要再使用一個裝飾器(不加也沒關系,但是最好還是加上去)

from django.utils.decorators import method_decorator

例:還是以統計時間的裝飾器為例

方法一:

class Xxx(View):
    @method_decorator(timer)
    def xx(self, request):
        ....

注:方法一比較簡單,只需在定義函數上面加上 @method_decorator(timer) 即可

方法二:

@method_decorator(timer, name='xx')
class Xxx(View):
    def xx(self, request):
        ....

注:方法二也不難,在類的上面加上 @method_decorator(timer, name='xx') 即可,其中 name='xx' 中的  'xx' 為讀者自定的方法名

望讀者細心閱之。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM