def权限,频率,分页

  权限

    -写一个类:

      class MyPer(BasePermission):

        message = ‘您没有权限‘

        def has_permission(self,request,view):

          # 取出当前登录用户

          user = request.user

          # 取出当前登录用户类型的中文

          tt = user.get_user_type_display()

          if user.user_type ==0:

            return True

          else:

            return False

    -局部使用

      permission_classes = [MyPer]

    -全局使用

      在setting中

      "DEFAULT_PERMISSION_CLASSES":[‘app01.auth.MyPer‘],

  频率

    -限制每个ip地址一分钟访问10次

    -写一个类

    from rest_framework.throtting import SimpleRate Throttle

    class VisitThrottle(SimpleRateThrottle):

      scope =‘xx‘ #一定要写它

      # 必须重写这个方法,返回什么,就以什么作为访问频率限制的东西

      def get_cache_key(self,request,view):

        #return self.get_ident(request)

        return request.META.get(‘REMOTE_ADDR‘)

      -在setting中配置:

        ‘DEFAULT_THROTTLE_RATES‘:{

          # 这个key跟scope对应,value值3/m 3/h 4/d

          ‘xx‘:‘3/m‘

        }

      -使用:

        -局部使用:

          throttle_classes = [VisitThrottle]

        -全局使用:

          "DEFAULT_THROTTLE_CLASSES":["app01.auth.VisitThrottle"],

  分页

    -简单分页

      -page_size = api_settings.PAGE_SIZE  :每页显示条数

      -page_query_param = ‘page‘   :查询的页码数

      -page_size_query_param = None  :每页最大显示条数

        -如果我要的是第一页显示10条:http://127.0.0.1:8000/books/?ccc=10&page=1

        -如果我要的是第二页显示5条:http://127.0.0.1:8000/books/?ccc=5&page=2

      max_page_size = 8  :控制最大显示多少条

      -如果我想第一页显示10000条,这种不合理,通过这个参数控制,最大显示8条

      -使用:

        page_simple = PageNumberPagination()

          page_simple.page_size = 4

          # page_simple.page_query_param = ‘aaa‘

          page_simple.page_size_query_param = ‘ccc‘

          page_simple.max_page_size = 8

          book_list = models.Book.objects.all()

          page_list = page_simple.paginate_queryset(book_list,request,self)

          book_ser = BookSerializer(instance = page_list,many=True)

    -偏移分页

      -default_limit = api_settings.PAGE_SIZE: 默认偏移的条数 5

      limit_query_param = ‘limit‘  :偏移的条数

      offset_query_param = ‘offset‘  :是标杆

      max_limit = None  :最大偏移的条数

    -游标分页:原理:速度最快,但是只能往前走和往后走

      -cursor_query_param = ‘cursor‘

      page_size = api_settings.PAGE_SIZE :默认每页显示的条数

      ordering = ‘id‘  :按谁排序

      

原文地址:https://www.cnblogs.com/xiaocaiyang/p/10453028.html

时间: 2024-10-08 11:45:31

def权限,频率,分页的相关文章

drf框架 8 系统权限类使用 用户中心信息自查 token刷新机制 认证组件项目使用:多方式登录 权限组件项目使用:vip用户权限 频率组件 异常组件项目使用

系统权限类使用 图书接口:游客只读,用户可增删改查权限使用 from rest_framework.permissions import IsAuthenticatedOrReadOnly class BookViewSet(ModelViewSet): # 游客只读,用户可增删改查 permission_classes = [IsAuthenticatedOrReadOnly] queryset = models.Book.objects.all() serializer_class = se

DRF 权限 频率

DRF的权限 权限是什么 大家之前都应该听过权限~那么我们权限到底是做什么用的呢~~ 大家都有博客~或者去一些论坛~一定知道管理员这个角色~ 比如我们申请博客的时候~一定要向管理员申请~也就是说管理员会有一些特殊的权利~是我们没有的~~ 这些对某件事情决策的范围和程度~我们叫做权限~~权限是我们在项目开发中非常常用到的~~ 那我们看DRF框架给我们提供的权限组件都有哪些方法~~ 权限组件源码 我们之前说过了DRF的版本和认证~也知道了权限和频率跟版本认证都是在initial方法里初始化的~~ 其

Django rest_framework----认证,权限,频率组件

认证 from rest_framework.authentication import BaseAuthentication from rest_framework.exceptions import AuthenticationFailed from api.models import * class AuthToken(BaseAuthentication): def authenticate(self, request): token=request.GET.get('token') t

认证权限频率自定义

from rest_framework.authentication import BaseAuthenticationfrom rest_framework.permissions import BasePermissionfrom rest_framework.throttling import BaseThrottle,SimpleRateThrottlefrom django_redis import get_redis_connectionfrom rest_framework imp

DRF的权限和频率

DRF的权限 权限组件源码 权限和频率以及版本认证都是在initial方法里初始化的 我们的权限类一定要有has_permission方法~否则就会抛出异常~~这也是框架给我提供的钩子~~ 在rest_framework.permissions这个文件中~存放了框架给我们提供的所有权限的方法~~ 主要说下BasePermission 这个是我们写权限类继承的一个基础权限类~~~ 权限的详细用法 initial方法在初始化的时候是有顺序的:版本-->权限-->频率 写权限类 class MyPe

DRF 版本、认证、权限、限制、解析器和渲染器

目录 一.DRF之版本控制 为什么要有版本控制? DRF提供的版本控制方案 版本的使用 全局配置 局部配置(使用较少) 二.DRF之认证 内置的认证 步骤 三.DRF之权限 1.自定义一个权限类 2.权限 局部配置 3.权限 全局配置 四.DRF之限制 1.使用自定义限制类 1.1自定义一个限制类 1.2限制 局部配置 1.3限制 全局配置 2.使用内置限制类 2.1定义内置限制类 2.2全局配置 五.DRF之分页 1.为什么要使用分页 2.DRF使用分页器 2.1分页模式 2.2全局配置 2.

Drf03 / drf版本、认证、权限

目录 Drf03 / drf版本.认证.权限 回顾和补充 今日概要 今日详细 1.请求的封装 2.版本 3.认证(面试) 作业:将认证的功能添加到呼啦圈中. Drf03 / drf版本.认证.权限 回顾和补充 restful规范 1. 建议用https代替http 2. 在URL中体现api,添加api标识 https://www.cnblogs.com/xwgblog/p/11812244.html # 错误 https://www.cnblogs.com/api/xwgblog/p/1181

Django html 分页

16.分页 django 自带的分页:django paginator 参考:https://docs.djangoproject.com/en/1.10/topics/pagination/ >>> from django.core.paginator import Paginator >>> objects = ['john', 'paul', 'george', 'ringo'] >>> p = Paginator(objects, 2) >

039 权限数据管理 - bos

一.初始化权限数据 1.系统运行所以须的基础数据 2.运行sql INSERT INTO `auth_function` VALUES ('11', '基础档案', 'jichudangan', null, null, '1', '0', null); INSERT INTO `auth_function` VALUES ('112', '收派标准', 'standard', null, 'page_base_standard.action', '1', '1', '11'); INSERT I