博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
def权限,频率,分页
阅读量:5064 次
发布时间:2019-06-12

本文共 2275 字,大约阅读时间需要 7 分钟。

  权限

    -写一个类:

      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

你可能感兴趣的文章
自定义tabbar(纯代码)
查看>>
小程序底部导航栏
查看>>
ibatis学习笔记
查看>>
18-ES6(1)
查看>>
poj1611 简单并查集
查看>>
Ubuntu 14.04下安装CUDA8.0
查看>>
跨平台开发 -- C# 使用 C/C++ 生成的动态链接库
查看>>
C# BS消息推送 SignalR介绍(一)
查看>>
WPF星空效果
查看>>
WPF Layout 系统概述——Arrange
查看>>
PIGOSS
查看>>
几款Http小服务器
查看>>
iOS 数组排序
查看>>
第三节
查看>>
PHP结合MYSQL记录结果分页呈现(比较实用)
查看>>
Mysql支持的数据类型
查看>>
openSuse beginner
查看>>
Codeforces 620E(线段树+dfs序+状态压缩)
查看>>
Windows7中双击py文件运行程序
查看>>
Market entry case
查看>>