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

你可能感兴趣的:(django原始框架)