django免除csrf校验

免除csrf校验

在django中默认启动csrf校验,当用户发起post请求时,必须携带csrf_token参数。如果不想使用csrf校验时,可以使用以下方式免除校验。以下方式都是在局部中使用,如果想全局禁用时,需要在settings文件中配置,这种方式不推荐使用。

一、函数免除csrf校验

from django.views.decorators.csrf import csrf_exempt# 免除csrf校验@csrf_exempt
def users(request):    
	uses_list = ["柚子", "西瓜"]    
	return HttpResponse(json.dumps(uses_list))

二、对类免除csrf校验

  1. 第一种方式
    # dispatch是类视图的根方法,通过dispatch进行反射找到其他请求
    
    from django.views.decorators.csrf import csrf_exempt
    from django.utils.decorators import method_decorator
    class StudentsView(View):
        """student view"""
    	@method_decorator(csrf_exempt)
        def dispatch(self, request, *args, **kwargs):
            print("before")
            ret = super(StudentsView, self).dispatch(request, *args, **kwargs)
            print("after")
            return ret(request, *args, **kwargs)
        
        def get(self,*args,**kwargs):
            return HttpResponse("get")
    
        def post(self,*args,**kwargs):
            return HttpResponse("post")
    
        def put(self,*args,**kwargs):
            return HttpResponse("put")
    
        def delete(self,*args,**kwargs):
            return HttpResponse("delete")
    
  2. 第二种方式
    from django.views.decorators.csrf import csrf_exempt
    from django.utils.decorators import method_decorator
    
    @method_decorator(csrf_exempt,name="dispatch")
    class StudentsView(View):
        """student view"""
    
        def get(self,*args,**kwargs):
            return HttpResponse("get")
    
  3. 第三种方式
    from django.views.decorators.csrf import csrf_exempt
    class MyBaseView(object):
        @csrf_exempt
        def dispatch(self, request, *args, **kwargs):
            print("before")
            ret = super(MyBaseView, self).dispatch(request, *args, **kwargs)
            print("after")
            return ret
    
  4. 第四种,在url中添加
    from django.views.decorators.csrf import csrf_exempt
    urlpatterns = [
        path('teachers/', csrf_exempt(TeachersView.as_view()), name="teachers"),
    ]
    
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值