RestFramework之注册器、响应器与分页器

一、注册器的说明与使用

  在我们编写url时经常会因请求方式不同,而重复编写某条url,而rest_framework中的注册器帮我节省了很多代码

  下面介绍一下如何使用

# 利用注册器来实现路由分发
from rest_framework import routers          # 导入
router = routers.DefaultRouter()             # 实例化对象
router.register('book',views.BookView)      # 注册

  还需要在urlpatterns中加入

re_path('^',include(router.urls))

  还有更多功能如直接查看数据格式等等

二、响应器的使用

  响应器的作用就是让浏览器不在返回django rest_framework做的那个网页,而是直接返回数据

  

  使用方法:

    1.首先在views导入  

from rest_framework.renderers import JSONRenderer  # 响应器

    2.在视图类中设置,指定返回类

render_classes = [JsonRender]

  全都配置好之后再去访问浏览器时就不会在返回页面了

  

三、分页器的使用

  分页器的使用:

        - 导入模块
            from rest_framework.pagination import PageNumberPagination
            
        - 获取数据
            books = Book.objects.all()
                
        - 创建一个分页器对象
            paginater = PageNumberPagination()
                
        - 开始分页
            paged_books = paginater.paginate_queryset(books, request)
                
        - 开始序列化
            serialized_books = BookSerializer(paged_books, many=True)
          
        - 返回数据
            return Response(serialized_books.data)

  当我们用到视图类中继承ModelViewSet时需要自己编写分页类

  1.首先需要导入模块

from rest_framework.pagination import PageNumberPagination

  2.编写分页器

class ThePagination(PageNumberPagination):
    page_size = 2                            # 每次获取的数量
    page_query_param = 'page'               # url上的page参数
    page_size_query_param = 'size'          # 临时要取数据的时候,可以在url上加的参数size
    max_page_size = 4                       # 限制最多可以获取数据的多少

  3.最后还要在视图类中加入

pagination_class = ThePagination    # 分页器

  测试一下:

  

原文地址:https://www.cnblogs.com/qq631243523/p/10102848.html