Django笔记——csrf认证

红太狼 2023-06-20 14:00 69阅读 0赞

FBV模式

csrf免认证

  1. from django.views.decorators.csrf import csrf_exempt
  2. @csrf_exempt # 该函数无需认证
  3. def users(request):
  4. user_list = ['张三','李四']
  5. res = json.dumps(user_list)
  6. return HttpResponse(res)

csrf单独认证

  1. from django.views.decorators.csrf import csrf_protect
  2. @csrf_protect # 该函数需认证
  3. def users(request):
  4. user_list = ['张三','李四']
  5. res = json.dumps(user_list)
  6. return HttpResponse(res)

CBV模式

添加csrf免认证

方式一:在类视图上面添加@method_decorator(csrf_exempt, name=‘dispatch’)

  1. from django.views.decorators.csrf import csrf_exempt,csrf_protect
  2. from django.utils.decorators import method_decorator
  3. @method_decorator(csrf_exempt,name='dispatch')
  4. class StudentsView(View):
  5. def get(self,request,*args,**kwargs):
  6. return HttpResponse('GET')
  7. def post(self, request, *args, **kwargs):
  8. return HttpResponse('POST')
  9. def put(self, request, *args, **kwargs):
  10. return HttpResponse('PUT')
  11. def delete(self, request, *args, **kwargs):
  12. return HttpResponse('DELETE')

方式二:在类视图中的dispatch()方法前面添加@method_decorator(csrf_exempt)

  1. from django.views.decorators.csrf import csrf_exempt,csrf_protect
  2. from django.utils.decorators import method_decorator
  3. class StudentsView(View):
  4. @method_decorator(csrf_exempt)
  5. def dispatch(self, request, *args, **kwargs):
  6. return super(StudentsView,self).dispatch(request, *args, **kwargs)
  7. def get(self,request,*args,**kwargs):
  8. print('get方法')
  9. return HttpResponse('GET')
  10. def post(self, request, *args, **kwargs):
  11. return HttpResponse('POST')
  12. def put(self, request, *args, **kwargs):
  13. return HttpResponse('PUT')
  14. def delete(self, request, *args, **kwargs):
  15. return HttpResponse('DELETE')

发表评论

表情:
评论列表 (有 0 条评论,69人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Django——认证

    > 登录就是认证,上一篇简单说了登录。认证是对身份的识别,出现的场景更加多样。 django自带auth模块使用 在[登录中][Link 1]的实现方法基本都是采用dj