zoukankan      html  css  js  c++  java
  • 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'  :按谁排序

          

  • 相关阅读:
    Java静态代理学习
    Java反射学习三
    Java反射学习二
    Java反射学习一
    Java反射学习四
    linux下vim命令详解
    linux安装jdk
    转 知道这20个正则表达式,能让你少写1,000行代码
    excel函数2
    excel函数
  • 原文地址:https://www.cnblogs.com/xiaocaiyang/p/10453028.html
Copyright © 2011-2022 走看看