调用process_view方法
检查视图是否被@csrf_exempt(免除csrf认证)
——去请求体或cookie中获取令牌
中间件=[ “django.middleware.security.SecurityMiddleware”, “django.contrib.sessions.middleware.SessionMiddleware”, “django.middleware.common.CommonMiddleware”, “django.middleware.csrf。CsrfViewMiddleware”, #全站使用csrf认证 “django.contrib.auth.middleware.AuthenticationMiddleware”, “django.contrib.messages.middleware.MessageMiddleware”, “django.middleware.clickjacking.XFrameOptionsMiddleware”, )
如果我想让某个请求不通过csrf认证可以这样做
从django.views.decorators.csrf进口csrf_exempt @csrf_exempt #该函数无需认证 def用户(请求): user_list=(“亚历克斯”,“卑劣”) 返回HttpResponse (json.dumps ((user_list)))
中间件=[ “django.middleware.security.SecurityMiddleware”, “django.contrib.sessions.middleware.SessionMiddleware”, “django.middleware.common.CommonMiddleware”, #“django.middleware.csrf。CsrfViewMiddleware”, #全站不使用csrf认证 “django.contrib.auth.middleware.AuthenticationMiddleware”, “django.contrib.messages.middleware.MessageMiddleware”, “django.middleware.clickjacking.XFrameOptionsMiddleware”, )
如果我想让某个请求使用csrf认证可以这样做
从进口csrf_exempt django.views.decorators.csrf csrf_protect @csrf_protect #该函数需认证 def用户(请求): user_list=(“亚历克斯”,“卑劣”) 返回HttpResponse (json.dumps ((user_list)))
——@method_decorator (csrf_exempt)
——在派遣方法中(单独方法无效)
<强>方式一强>
从进口csrf_exempt django.views.decorators.csrf csrf_protect 从django.utils.decorators进口method_decorator 类StudentsView(观点): @method_decorator (csrf_exempt) def调度(自我,请求,* args, * * kwargs): 返回超级(StudentsView自我)。调度(请求、* args * * kwargs) def get(自我,请求,* args, * * kwargs): 打印(“方法”) 返回HttpResponse(得到) def post(自我,请求,* args, * * kwargs): 返回HttpResponse(“文章”) def put(自我,请求,* args, * * kwargs): 返回HttpResponse(把) def删除(自我,请求,* args, * * kwargs): 返回HttpResponse(“删除”)
<强>方式二
强>
从进口csrf_exempt django.views.decorators.csrf csrf_protect 从django.utils.decorators进口method_decorator @method_decorator (csrf_exempt name='发送') 类StudentsView(观点): def get(自我,请求,* args, * * kwargs): 打印(“方法”) 返回HttpResponse(得到) def post(自我,请求,* args, * * kwargs): 返回HttpResponse(“文章”) def put(自我,请求,* args, * * kwargs): 返回HttpResponse(把) def删除(自我,请求,* args, * * kwargs): 返回HttpResponse(“删除”)
-
<李>——本质,基于反射来实现李>
<李>——流程:路由,看来,调度(反)射李>
<李>——取消csrf认证(装饰器要加到派遣方法上且method_decorator装饰)李>
-
<李>——csrf
-
<李>——基于中间件的process_view方法李>
<李>——装饰器给单独函数进行设置(认证或无需认证)李>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。