1. 程式人生 > >django 類檢視使用裝飾器

django 類檢視使用裝飾器

為類檢視新增裝飾器,可以使用兩種方法

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')