装饰器的作用(简而言之):让其他函数在不需要做任何代码变动的前提下增加额外的功能
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’ 为读者自定的方法名。
望读者细心阅之。