django 類檢視使用裝飾器
阿新 • • 發佈:2019-02-16
為類檢視新增裝飾器,可以使用兩種方法
1.在URL配置中裝飾(my_decoratte是自定義的裝飾器)
urlpatterns = [
url(r'^demo/$', my_decorate(DemoView.as_view()))
]
2.在類檢視中裝飾
在類檢視中使用裝飾器時,不能直接新增裝飾器,需要使用method_decorator將其轉換為適用於類檢視方法的裝飾器
# 為全部請求方法新增裝飾器 @method_decorator(my_decorator, name='dispatch') class DemoView(View): def get(self, request): print('get方法') return HttpResponse('ok') def post(self, request): print('post方法') return HttpResponse('ok') # 為特定請求方法新增裝飾器 @method_decorator(my_decorator, name='get') class DemoView(View): def get(self, request): print('get方法') return HttpResponse('ok') def post(self, request): print('post方法') return HttpResponse('ok')
# 為特定請求方法新增裝飾器 class DemoView(View): @method_decorator(my_decorator) # 為get方法添加了裝飾器 def get(self, request): print('get方法') return HttpResponse('ok') @method_decorator(my_decorator) # 為post方法添加了裝飾器 def post(self, request): print('post方法') return HttpResponse('ok') def put(self, request): # 沒有為put方法新增裝飾器 print('put方法') return HttpResponse('ok')