django url注册器组件, 响应器组件, 分页器组件

一.url注册器的使用

1.1导入模块

from django.urls import re_path, include
from .serializer import views
from rest_framework import routers

 1.2生成一个注册器实例对象

router = routers.DefaultRouter()

1.3将需要自动生成url的接口注册

router.register(r"books", views.BookView)

1.4开始自动生成url

urlpatterns = [
                re_path('^', include(router.urls)),
            ]

总结

本质上为了方便在引用midelViewset 时在urls 上注入大量繁琐的步骤,保持代码简洁

二.响应器组件

2.1 导入模块

 from rest_framework.renderers import JsonRender

2.2 指定返回类

 class BookView(APIView):
                render_classes = [JsonRender]

三.分页器组件

3.1分页器组件使用方式介绍

- 导入模块
                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)

3.2分页器组件局部实现

- 导入模块
from rest_framework.pagination import PageNumberPagination

- 在自定义一个分页类并继承PageNumberPagination
--class MyPageNumberPagination(PageNumberPagination):
    page_size = 2 每页显示数据
    page_query_param = "page_num" 通过?page_num= 来分页

    page_size_query_param = "size"
    max_page_size = 3 最大显示条目

-在实例化对象时候引用 pagination_class
    class BookView(ModelViewSet):
    queryset = Book.objects.all()
    serializer_class = BookSerializer

    pagination_class = MyPageNumberPagination

3.3 总结

本质上通过分页来传递数据减小服务端压力

原文地址:https://www.cnblogs.com/zhangqing979797/p/10102653.html