简单实例:

class MyPermission(object):
'''
   权限控制类
   '''
def has_permission(self,request,view):
if request.user.user_type !=3:
return False
return True class MyPermission1(object):
'''
   权限控制类
   '''
message = "必须是SVPI才能访问!"
def has_permission(self, request, view):
if request.user.user_type == 3:
return False
return True ORDER_DICT = {
1:{
'name': 'x',
'age': 18,
'gender':'y',
'content': '...'
},
2:{
'name': 'z',
'age': 18,
'gender': 'h',
'content': '...'
}
}
class OrderView(APIView):
# 权限控制 按需添加
permission_classes = [MyPermission,]
def get(self,request,*args,**kwargs):
ret = {'code':1000,'msg':None,'data':None}
try:
ret['data'] = ORDER_DICT
except Exception as e:
pass
return JsonResponse(ret) class UserInfoView(APIView):
"""
订单相关业务(普通用户,VIP)
"""
# 权限控制 按需添加
permission_classes = [MyPermission1, ]
def get(self,request,*args,**kwargs):
return HttpResponse('用户信息')

  

如果没有配置:

permission_classes = [MyPermission,]

# 如果没有设置以上内容  默认源码会去 settings里面找
permission_classes = api_settings.DEFAULT_PERMISSION_CLASSES #全局设置
REST_FRAMEWORK = {
  "DEFAULT_PERMISSION_CLASSES": "api.utils.permission.Mypermission",
}

  

源码流程:

1--------
dispatch
2--------
initail
3--------
has_permission

  

改进版:

继承内置权限类:

from rest_framework.permissions import BasePermission
class MyPermission(BasePermission):
'''
   权限控制类
   '''
def has_permission(self,request,view):
if request.user.user_type !=3:
return False
return True

  

1.必须继承 BasePermission类

2.必须实现has_permission方法

最新文章

  1. thinkphp3.2与phpexcel带图片生成 完美案例
  2. 【转载】使用Pandas进行数据提取
  3. 万恶的ViewBag
  4. 关于Android中传递数据的一些讨论--备用
  5. 【贪心】Codeforces 704B & 705D Ant Man
  6. java的@see注释
  7. Asp.net MVC4 捆绑和压缩
  8. CentOS7 更换yum源
  9. multi-label image classification:多标签图像分类总结
  10. C++ 中的导致编译错误汇总
  11. Scrapy项目结构分析和工作流程
  12. Linux下的tr编辑器命令详解
  13. mybatis之接口绑定
  14. ThinkPHP实现登陆功能
  15. 少走弯路,一个老程序猿谈PHP职业发展规划
  16. OpenCv 人脸识别 基础
  17. Chrome 插件推荐
  18. Linux基础入门 - 1
  19. 查询多表集合(union)、查询时建临时字段、查询时给字段设置默认值
  20. Android开发中如何解析Json

热门文章

  1. kafka和rabbitmq对比
  2. kotlin 之单表达式函数
  3. PS改变图片像素大小(一寸照片变二寸)
  4. c# 线程异步处理
  5. JavaScript 模块化
  6. python函数,定义,参数,返回值
  7. GCN入门理解
  8. Css3 伪元素
  9. css解决fixed布局不会出现滚动条问题
  10. Flutter 底部的renderflex溢出