美文网首页
DRF之分页、url注册、版本、过滤、渲染器

DRF之分页、url注册、版本、过滤、渲染器

作者: 清风徐来_简 | 来源:发表于2019-05-26 16:56 被阅读0次

一、分页

如果数据非常多,就需要使用分页。前端发送要求,拿第几页数据,我就从数据库取第几页,只发送那一页的数据。

  • 1、所以数据量非常大大时候,就得一部分一部分去取。

    ①,导入类。
        from rest_framework.pagination import PageNumberPagination   #  默认的分页类
    ②,引用类。
        def get(self, request):
            book_list = Book.objects.all()
            pnp = PageNumberPagination()  # 分页使用
            paged_book_list = pnp.paginate_queryset(book_list,request)  # 分完页之后的书籍列表
            bs = BookSerializer(paged_book_list, many=True)
            return Response(bs.data)
    ③,settings中设置全局页数,"PAGE_SIZE":5
            REST_FRAMEWORK={
             "PAGE_SIZE":5
            #  如果这样设,所有的模型表分页都按照这个来了,因为每个表的数据量不同,所以没必要设置都一样
            }
    ④,取数据。
        http://127.0.0.1:8000/book/?token=f0a77220-255f-414a-9bd8-09a5893649de&page=2
    
  • 2、上面那样写会使全部模型表都是这样分页。还有一种写法。

    ①,导入类
        from rest_framework.pagination import PageNumberPagination
    ②,自定义类,并覆盖所需变量。
        def get(self, request):
            class MyPageNumberPagination(PageNumberPagination):
                page_size=2
                page_query_param="page_num" # url上需要加的参数
                page_size_query_param="size"
                # 用于调整每页数据,如果前端不设置,就用我自己的每页多少条,如果前端想设置,就使用这个词。
                max_page_size=5
                # 最多显示条数,配合上面使用,设置可调之后才进行约束
    
              # http://127.0.0.1:8000/book/?token=f0a77220-255f-414a-9bd8-09a5893649de&page_num=2&size=3
              # 每页显示3条的第2页,一般这样写↓,先设置每页显示多少条,再说显示第几页。
              # http://127.0.0.1:8000/book/?token=f0a77220-255f-414a-9bd8-09a5893649de&size=3&page_num=5
            book_list=Book.objects.all()
            pnp=MyPageNumberPagination() # 分页使用
            paged_book_list=pnp.paginate_queryset(book_list,request) # 分完页之后的书籍列表
            bs = BookSerializer(paged_book_list, many=True)
            return Response(bs.data)
    
  • 3、彻底封装的视图类怎么使用分页器

      ①,from rest_framework.pagination import PageNumberPagination
    
      ②,class MyPageNumberPagination(PageNumberPagination):
              page_size = 2  # 自定义每页数据
    
      ③,class AuthorsView(ModelViewSet):
              queryset = Author.objects.all()
              serializer_class = AuthorSerializer
              pagination_class = MyPageNumberPagination
      ④,显示出来的是这样的数据
            {
                "count": 3,
                "next": "http://127.0.0.1:8000/authorsss/?page=2&token=f0a77220-255f-414a-9bd8-09a5893649de",
                "previous": null,
                "results": [
                    {
                        "nid": 1,
                        "name": "王七",
                        "age": 30
                    },
                    {
                        "nid": 2,
                        "name": "李四",
                        "age": 28
                    }
                ]
            }
    

二、url注册器

1,如果是数据模型,只有简单的增删改查查的话可以简单的封装成一个类
    class AuthorsView(ModelViewSet):
        queryset = Author.objects.all()
        serializer_class = AuthorSerializer

2,但是url需要自己写,两条。
    url(r'^authorsss/$',views3.AuthorsView.as_view({'get':'list','post':'create'})),
    url(r'^authorsss/(?P<pk>\d+)/',views3.AuthorsView.as_view({'get':'retrieve','delete':'destroy','put':'update'})),

3,但是用了注册器就不用自己写路由了,并且还多了两条。
    使用:
          from rest_framework import routers
          router = routers.DefaultRouter()
          router.register('authorssssss',views3.AuthorsView)  # 所需变量:路由,视图类
          from django.conf.urls import url,include
          url(r'^',include(router.urls))

三、版本过滤渲染器

相关文章

  • DRF之分页、url注册、版本、过滤、渲染器

    一、分页 如果数据非常多,就需要使用分页。前端发送要求,拿第几页数据,我就从数据库取第几页,只发送那一页的数据。 ...

  • django rest framework

    DRF安装 DRF配置 DRF基础 过滤器 DRF的分页功能 全局配置 局部配置

  • DRF的过滤,排序,分页

    数据准备 model.py admin.py serializers.py views.py urls.py 搜索...

  • DRF十大组件

    十大组件:认证 权限 节流 版本 解析器 序列化 分页 路由 视图 渲染器 ###################...

  • Django-filter 使用记录

    Django-filter 使用记录 配合DRF食用更佳 安装及注册 示例model 过滤 方式一 视图层直接设置...

  • django rest_framework

    1. 渲染器 渲染器格式如下: 2. 分页器 分页器有如下几种 : (1) PageNumberPaginatio...

  • DRF

    认证实现 权限 节流: 版本 序列化 解析器 局部使用: 全局使用 分页 视图 渲染器

  • DRF认证,权限,限流,流程

    drf十大组件 认证 权限(授权) 用户访问次数/频率限制 版本 解析器(parser) 序列化 分页 路由...

  • DRF其它功能-认证/权限/过滤/分页

    认证Authentication 可以在配置文件中配置全局默认的认证方案REST_FRAMEWORK = {'DE...

  • Drf 分页

    学习须知掌握配置源码image.png settings.py 自定义分页处理 展示image.png Or ap...

网友评论

      本文标题:DRF之分页、url注册、版本、过滤、渲染器

      本文链接:https://www.haomeiwen.com/subject/kwlftctx.html