Title

method_decorator方法
在CBV的方式中,单独给某个方法通过装饰器来免除是无效的,需要加到dispatch函数上面

# FBV
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def test(request):
    pass
 
# 在CBV的方式中,单独给某个方法通过装饰器来免除是无效的,需要加到dispatch函数上面
 
# 方法1
from django.views.decorators.csrf import csrf_exempt
from django.utils.decorators import method_decorator
class Test1(APIView):
    @method_decorator(csrf_exempt)
    def dispatch(self, request, *args, **kwargs):
        ret = super(Test1,self).dispatch(request, *args, **kwargs)
        return ret
 
# 方法2
@method_decorator(csrf_exempt,name='dispatch')
class Test2(APIView):
    pass

单独想用CSRF的方法

# 1.去掉setting中CSRF中间件
from django.views.decorators.csrf import csrf_protect
@csrf_protect
def test(request):
    pass
原文地址:https://www.cnblogs.com/guotianbao/p/12453984.html