01-在类的 dispatch 方法上使用 @csrf_exempt

from django.views.decorators.csrf import csrf_exemptclass MyView(View):def get(self, request):return HttpResponse("hi")def post(self, request):return HttpResponse("hi")@csrf_exemptdef dispatch(self, *args, **kwargs):return super(MyView, self).dispatch(*args, **kwargs)

02-在 urls.py 中配置

from django.conf.urls import url
from django.views.decorators.csrf import csrf_exempt
import viewsurlpatterns = [url(r'^myview/$', csrf_exempt(views.MyView.as_view()), name='myview'),
]

03-重新改写其中验证 csrf 的方法

在之前,我们对于 csrf 的处理都是使用的 csrf_exempt ,现在我们的 API 都是使用 Router 来生成了。该怎么办呢?
在 Django 中,一个请求在到达视图之前,会先经过中间件的处理。在 DRF 中,所有的请求会先经过认证处理,如果请求认证通过,则会让请求访问视图,如果认证不通过,请求就无法到达视图。所以,我们采用的方法是重写认证。
在 APIView 中,如果提供了 authentication_classes ,则会使用提供的认证后端来进行认证。如果没有提供,则会使用默认的认证后端。有关的细节我们将会在之后的章节中讨论,大家就先了解到这里。提供 csrf 验证的是一个叫做 SessionAuthentication 的认证后端,我们需要重新改写其中验证 csrf 的方法。

# views.pyfrom rest_framework.authentication import SessionAuthenticationclass CsrfExemptSessionAuthentication(SessionAuthentication):"""去除 CSRF 检查"""def enforce_csrf(self, request):returnclass MsgCodeViewSet(CreateModelMixin, viewsets.GenericViewSet):serializer_class = MsgCodeSerializerpagination_class = StandardResultsSetPagination# authentication_classes = (CsrfExemptSessionAuthentication, )permission_classes = (AllowAny, )

转载于:https://www.cnblogs.com/pgxpython/p/10683474.html

11 Django REST Framework 针对基于类的视图添加 @csrf_exempt相关推荐

  1. django 1.8 官方文档翻译: 3-4-3 使用基于类的视图处理表单

    使用基于类的视图处理表单 表单的处理通常有3 个步骤: 初始的的GET (空白或预填充的表单) 带有非法数据的POST(通常重新显示表单和错误信息) 带有合法数据的POST(处理数据并重定向) 你自己 ...

  2. django 1.8 官方文档翻译: 3-4-1 基于类的视图

    基于类的视图 视图是一个可调用对象,它接收一个请求然后返回一个响应.这个可调用对象可以不只是函数,Django 提供一些可以用作视图的类.它们允许你结构化你的视图并且利用继承和混合重用代码.后面我们将 ...

  3. Django 学习小组:基于类的通用视图详解(一)

    通过三周的时间我们开发了一个简单的个人 Blog,教程地址: 第一周:Django 学习小组:博客开发实战第一周教程 -- 编写博客的 Model 和首页面 第二周:Django 学习小组:博客开发实 ...

  4. FBV(function base views) 顾名思义基于函数的视图类 CBV(class base views)基于类的视图类

    一. 概念 FBV(function base views) 顾名思义基于函数的视图类 CBV(class base views)基于类的视图类 至于区别呢? 我觉得只是写法上的不一样, 实现的结果都 ...

  5. Django框架(11.Django中的通过模型类查询数据以及相关函数和条件)

     Django中的查询函数 通过模型类.objects属性可以调用如下函数,实现对模型类对应的数据表的查询.    不管哪个函数注意返回值的类型 函数名 功能 返回值 说明 get 返回表中满足条件的 ...

  6. 第5天:基于类的视图与中间件

    类视图引入 类视图的定义与使用 类视图实现的原理 在类视图中使用装饰器 类视图多继承&Minx扩展类 中间件 类视图引入 以函数的方式定义的视图成为函数视图,函数视图便于理解.但是遇到一个视图 ...

  7. as 不显示gradle视图_Python构建RESTful网络服务[Django篇:基于类视图的API]

    系列文章介绍 本系列文章将详细介绍将Django官方引导教程中的投票项目改写为RESTful网络服务.Django官方教程地址https://docs.djangoproject.com/zh-han ...

  8. django 1.8 官方文档翻译: 3-4-2 基于类的内建通用视图

    基于类的内建通用视图 编写Web应用可能是单调的,因为你需要不断的重复某一种模式. Django尝试从model和 template层移除一些单调的情况,但是Web开发者依然会在view(视图)层经历 ...

  9. Django 基于类的通用视图详解

    原文出处:https://segmentfault.com/a/1190000005685454 Django 学习小组:基于类的通用视图详解(一) 通过三周的时间我们开发了一个简单的个人 Blog, ...

  10. [转]Django REST framework 简介与中文教程

    Django REST framework 简介与中文教程 简介 在序列化与反序列化时,虽然操作的数据不尽相同,但是执行的过程却是相似的,也就是说这部分代码是可以复用简化编写的. 在开发REST AP ...

最新文章

  1. 分部类--重温篇[好处,示例]
  2. 基于改进的RPCA人脸识别算法
  3. python的网页解析器_Python网页解析器使用实例详解
  4. 算法设计与分析——分治与递归策略——hanoi问题
  5. 操作系统学习总结(超赞!!!)
  6. 零基础学python大概要多久-怎么自学python,大概要多久?
  7. ConcurrentHashMap源码分析(保姆式讲解):Put、扩容原理详解 博主可答疑
  8. 自己上手搭建VUE项目
  9. html5 js实现ppt制作,impress.js前端制作酷炫ppt详细教程
  10. ios数据恢复工具:Mac FoneLab for Mac
  11. stm32摄像头调试 | 串口传输照片数据 | 用python来设计上位机通信软件
  12. Arnold材质节点篇-阴影遮罩Shadow matte、颜色转换、纹理着色器
  13. java模拟器怎么打开apk文件,APK是什么 APK文件怎么打开【详解】
  14. Android学习之Pair类 (android.util.Pair )
  15. 如何让自己变得更加成熟
  16. 小红书App产品需求文档(PRD)
  17. oracle06004,Oracle不完全恢复-主动恢复和incarnation/RMAN-20208/RMAN-06004
  18. Android音频管理器AudioManager用法
  19. homework-08
  20. vue获取用户本机ip方法

热门文章

  1. vue echarts 实现速度的那种进度蓄力效果
  2. FireFox更改缓存路径
  3. 基于ASP.NET的读书网站设计与实现
  4. finecms aip.php漏洞,finecms V5 会员头像任意文件上传漏洞 附修复代码
  5. 多多客支持微信公众号,正式开放公测!
  6. 网页屏蔽右键,另存功能
  7. 用Hive、Impala查询Hbase数据
  8. 木门锁孔合页综合加工机器
  9. 【python】我用30行代码实现了小米新logo的制作
  10. 计数排序 | Counting Sort