一,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
浙公网安备 33010602011771号