csrf相关装饰器(视图类CBV如何添加装饰器)

  1. 网站整体不校验,只有几个需要校验
  2. 网站整体校验,只有几个不需要校验
CBV中加装饰器的三种方式 装饰器csrf_protect 装饰器csrf_exempt
在类中直接加在某个函数上 有效 无效
在类头顶上给某个函数加 有效 无效
给dispatch函数加 有效 有效

csrf_protect和csrf_exempt加给某个视图函数都是有效的


from django.utils.decorators import method_decorator
from django.views.decorators.csrf import csrf_exempt,csrf_protect
# @csrf_exempt 	#表示不校验
# @csrf_protect	#表示要校验

# 方式二,可以针对不同的方法添加不同的装饰器
# @method_decorator(log_auth,name='get')
# @method_decorator(csrf_protect,name='post')
# @method_decorator(csrf_exempt,name='post')
class MyCsrf(View):
    # 方式三,给dispatch添加装饰器,会作用于当前类里面的所有方法
    @method_decorator(csrf_exempt)
    def dispatch(self, request, *args, **kwargs):
        return super(MyCsrf,self).dispatch(request,*args, **kwargs)

    
    # @method_decorator(log_auth)
    def get(self, request):
        return HttpResponse('get请求')

	# 方式一,直接给某个方法添加
    # @method_decorator(csrf_protect)
    # @method_decorator(csrf_exempt)
    def post(self, request):
        return HttpResponse('post请求')

上一篇:Django中间件及csrf跨站请求处理


下一篇:Auth模块