码迷,mamicode.com
首页 > 数据库 > 详细

DBV和CBV单独去除csrf_token验证

时间:2020-03-25 01:41:37      阅读:83      评论:0      收藏:0      [点我收藏+]

标签:请求   exce   method   end   视图   strong   原理   csrf   中间件   

csrf中间件原理

  django中间件最多有5种方法:

    process_request

    process_view

    process_response

    process_exception

    process_render_template

csrf中间件写在process_view中,用户请求过来经过process_request,走到路由,再走process_view,走process_view之前判断这个视图函数或者类有没有设置csrf,如果设置了免除csrf验证,则跳过中间件的执行。

  csrf全局关闭只需要注释中间件即可,但是局部如何免除csrf验证呢:

DBV:

from django.views.decorators.csrf import csrf_exempt, csrf_protect
from django.utils.decorators import method_decorator



# 当开启csrf中间件时,局部免除csrf验证
@csrf_exempt
def bookcreate(request):
    pass

# 当关闭csrf中间件时,局部开启csrf验证
@csrf_protect
def publish(request):
    pass

 

CBV:

from django.views.decorators.csrf import csrf_exempt, csrf_protect
from django.utils.decorators import method_decorator

@method_decorator(csrf_exempt, name="dispatch")
class BookView(views.View):
    def get(self, request):
        pass

 

DBV和CBV单独去除csrf_token验证

标签:请求   exce   method   end   视图   strong   原理   csrf   中间件   

原文地址:https://www.cnblogs.com/aizhinong/p/12563377.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!