一,url注册器

DRF的url注册器,可以帮助我们自动生成url,使用步骤如下:

(1)导入模块

 from rest_framework import routers

(2),实例化一个router对象

router = DefaultRouter()

(3),将需要自动生成url的接口注册到router中

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

(4),生成url

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

以上步骤都在urls中完后

 

二,响应器

之前我们使用DRF的Response类将数据相应给客户端,看到的都是DRF通过响应器帮我们格式化好的数据,看着非常清晰,那么我们如果不需要DRF帮我们进行格式化的时候,可以关闭响应器,这样我们得到的就是没有格式化的普通的json数据

只需要在views中:

1 from rest_framework.renderers import JSONRenderer
2 
3 
4 class BookView(ModelViewSet):
5     renderer_classes = [JSONRenderer]
6     queryset = Book.objects.all()
7     serializer_class = BookSerializer

这样,我们再访问的时候,得到的就是普通的json数据

 

三,分页器

如果数据量非常大的情况下,为了服务器的性能以及用户体验,我们不应该一次性把所有数据返回给前端,此时我们就需要用到分页器,控制每次返回给前端的数据量.

自定义分页:

全局settings中配置:

REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS':'rest_framework.pagination.PageNumberPagination', #配置分页类
    'PAGE_SIZE': 2  # 每页显示多少条数据
}

page.py文件:

from rest_framework.pagination import PageNumberPagination


class MyPagination(PageNumberPagination):
    page_size = 3     # 每页显示多少条
    page_query_param = 'page'    # URL中每页显示条数的参数
    page_size_query_param = 'size'   # URL中页码的参数
    max_page_size = 5    # 控制能获取的最大条数

views中:

1 from app01.chasses import page
2 
3 class BookView(ModelViewSet):
4     pagination_class = page.MyPagination  #不用加[ ],
5     queryset = Book.objects.all()
6     serializer_class = BookSerializer