django中csrf使用方法

什么是csrf ?

  • csrf是一种服务器过滤不安全post请求的方法
  • 具体是服务器生成一个随机字符串,浏览器GET请求会得到这个字符串,
    POST请求的时候带上这个字符串,服务器收到request时候验证,并确认

 在django中开启csrf服务:

在django中的setting文件中的,middleware列表有一行:

'django.middleware.csrf.CsrfViewMiddleware',  
所以,csrf是自带,而且开启的。
 
使用模板语言在html中直接调用 :{%csrf_token%}
在浏览器端表现为:
<input type="hidden" name="csrfmiddlewaretoken" value="AkzFz4k7nHaAQOTBIbCLdswfgzQH09WkJxxWEtpM8GD8ZDbjX6hliuTiGt4iUgbz">0  
如果此标签是放在form表单中则随POST请求一起提交了。
 
 在django中禁用csrf服务:
  •   在middleware列表注释掉
    'django.middleware.csrf.CsrfViewMiddleware',  

局部禁用:

  •   在视图函数前加上装饰器@csrf_exempt,需要先引入from django.views.decorators.csrf import csrf_exempt
  •         在cbv模式下,from django.utils.decorators import method_decorator,然后在class上加@csrf_exempt

局部启用

  •   在全局禁用的情况下
  •   引入函数  from django.views.decorators.csrf import csrf_protect
  •         在视图函数前加入@csrf_protect
  •         cbv模式下,在class前加上@csrf_protect