- 网站整体不校验,只有几个需要校验
- 网站整体校验,只有几个不需要校验
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请求')