不啰嗦直接上代码用一个简单地例子理解
- 首先定义一个装饰器
# 定义一个装饰器
def zhuangshiqi(func):
def inner(request,*args,**kwargs):
print("装饰内容1")
ret = func(request,*args,**kwargs)
print("装饰内容2")
return ret
return inner
- 导入模块
from django.utils.decorators import method_decorator
- 类视图
# 因为类视图要继承View 所以我们需要导入模块
from django.views import View
# 以下是第一种方法:加在类的上方,给所有请求方式添加装饰器格式:@method_decorator(装饰器函数名,name="dispatch)
# @method_decorator(zhuangshiqi,name="dispatch")
# 以下是第二种方法:同样在类上放加,给指定的请求方法加,name="你想要的的请求方式"
# @method_decorator(zhuangshiqi,name="get")
class IndexView(View):
# 注意:类视图中的请求方式,以小写形式写
# 第三种:想给谁装饰,就在哪个函数上面加 @method_decorator(装饰器函数名)
@method_decorator(zhuangshiqi)
def get(self,request):
return HttpResponse("类视图get")
def post(self,request):
return HttpResponse("类视图post")
@method_decorator(zhuangshiqi)
def put(self,request):
return HttpResponse("类视图put")
- 类视图的路由
url(r"^index/$", views.IndexView.as_view()),
最后用postman来验证不同的请求方式.用不同的请求方式,post就显示什么请求方式,而装饰的内容,如果在python解释器上面显示了,证明装饰成功!!!