简单实例:

  1. class MyPermission(object):
  2. '''
  3.    权限控制类
  4.    '''
  5. def has_permission(self,request,view):
  6. if request.user.user_type !=3:
  7. return False
  8. return True
  9.  
  10. class MyPermission1(object):
  11. '''
  12.    权限控制类
  13.    '''
    message = "必须是SVPI才能访问!"
  14. def has_permission(self, request, view):
  15. if request.user.user_type == 3:
  16. return False
  17. return True
  18.  
  19. ORDER_DICT = {
  20. 1:{
  21. 'name': 'x',
  22. 'age': 18,
  23. 'gender':'y',
  24. 'content': '...'
  25. },
  26. 2:{
  27. 'name': 'z',
  28. 'age': 18,
  29. 'gender': 'h',
  30. 'content': '...'
  31. }
  32. }
  33. class OrderView(APIView):
  34. # 权限控制 按需添加
  35. permission_classes = [MyPermission,]
  36. def get(self,request,*args,**kwargs):
  37. ret = {'code':1000,'msg':None,'data':None}
  38. try:
  39. ret['data'] = ORDER_DICT
  40. except Exception as e:
  41. pass
  42. return JsonResponse(ret)
  43.  
  44. class UserInfoView(APIView):
  45. """
  46. 订单相关业务(普通用户,VIP)
  47. """
  48. # 权限控制 按需添加
  49. permission_classes = [MyPermission1, ]
  50. def get(self,request,*args,**kwargs):
  51. return HttpResponse('用户信息')

  

如果没有配置:

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

  

源码流程:

  1. 1--------
  2. dispatch
  3. 2--------
  4. initail
  5. 3--------
  6. has_permission

  

改进版:

继承内置权限类:

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

  

1.必须继承 BasePermission类

2.必须实现has_permission方法

Django rest-framework框架-用户权限实例的更多相关文章

  1. Django Rest framework 框架之认证使用和源码执行流程

    用这个框架需要先安装: pip3 install djangorestframework 如果写了一个CBV的东西,继承了View. # 继承Django里面View class APIView(Vi ...

  2. Django REST framework框架介绍和基本使用

    Django REST framework介绍 Django REST framework是基于Django实现的一个RESTful风格API框架,能够帮助我们快速开发RESTful风格的API. 官 ...

  3. Django Rest Framework(认证、权限、限制访问频率)

    阅读原文Django Rest Framework(认证.权限.限制访问频率) django_rest_framework doc django_redis cache doc

  4. Django Rest Framework框架 ---- url控制器

    Django Rest Framework框架 ---- url控制器

  5. web前端Vue+Django rest framework 框架 生鲜电商项目实战视频教程 ☝☝☝

    web前端Vue+Django rest framework 框架 生鲜电商项目实战视频教程    web前端Vue+Django rest framework 框架 生鲜电商项目实战视频教程 学习 ...

  6. web前端Vue+Django rest framework 框架 生鲜电商项目实战✍✍✍

    web前端Vue+Django rest framework 框架 生鲜电商项目实战  整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频 ...

  7. Django Rest framework 框架

    一.开发模式: 1. 普通开发方式(前后端放在一起写) 2. 前后端分离(前后台通过ajaxo交互) 后端(django rest framework写的) <----ajaxo---> ...

  8. 04 Django REST Framework 认证、权限和限制

    目前,我们的API对谁可以编辑或删除代码段没有任何限制.我们希望有更高级的行为,以确保: 代码片段始终与创建者相关联. 只有通过身份验证的用户可以创建片段. 只有代码片段的创建者可以更新或删除它. 未 ...

  9. django 基于proxy实现用户权限管理

    项目中经常会遇到用户权限管理的问题,django adminsite已经提供非常实用的用户权限管理机制.不过有些时候,我们希望根据相关用户属性来过滤adminsite中显示的内容.下文将结束如何实现: ...

随机推荐

  1. 安装Chrome扩展程序xpath

    最近工作用到xpath,直接从浏览器复制下来路径时常会出错而且长度很长,于是我想到之前用过的一款chrome插件,可以直接编写xpath语句,并实时出现解析出的结果,检验xpath语句是否编写正确.效 ...

  2. selenium 隐式等待报错 value must be a non-negative integer

    笔者运行代码使用selenium的隐式等待时出现报错: from selenium import webdriver # 从selenium导入webdriver import time driver ...

  3. 转载:OutOfMemoryError系列(2): GC overhead limit exceeded

    这是本系列的第二篇文章, 相关文章列表: OutOfMemoryError系列(1): Java heap space OutOfMemoryError系列(2): GC overhead limit ...

  4. P3015 [USACO11FEB]最好的括号Best Parenthesis

    P3015 [USACO11FEB]最好的括号Best Parenthesis 题解 一定要开 long long !!! 通过阅读英文题面我们知道所给出的字符串是已经匹配好的,所以我们只是计算就好了 ...

  5. 回归regression

    X-Y存在某种映射关系,回归:确定出关系模型.

  6. ForkJoinPool 源码分析

    ForkJoinPool ForkJoinPool 是一个运行 ForkJoinTask 任务.支持工作窃取和并行计算的线程池 核心参数+创建实例 // 工作者线程驻留任务队列索引位 static f ...

  7. Swift 基本语法

    如果创建的是 OS X playground 需要引入 Cocoa : import Cocoa /* 我的第一个 Swift 程序 */ var myString = "Hello, Wo ...

  8. kotlin异常类

    kotlin中所有的错误异常类都是throwable的自雷,没各一次都能带有一个错误消息,调用堆栈,以及可选的错误原因,要抛出异常,可以使用throw表达式 throw myException(&qu ...

  9. 分JOB实例

    *&---------------------------------------------------------------------* *& Form F_SET_JOB * ...

  10. nginx和php-fpm 是使用 tcp socket 还是 unix socket ?

    转自 http://blog.csdn.net/qq624202120/article/details/60957634 从上面的图片可以看,unix socket减少了不必要的tcp开销,而tcp需 ...