十、分页器
-简单分页: -from rest_framework.pagination import PageNumberPagination -生成一个对象 -调用对象的.page.paginate_queryset(books, request, view=self) -会有返回结果:把结果序列化,返回 -四个参数: 每页的大小 page_size = api_settings.PAGE_SIZE 查询第几页参数 page_query_param = 'page1' 可以指定每页的大小 page_size_query_param = None 每页最大显示多少 max_page_size = None -偏移分页 -from rest_framework.pagination import LimitOffsetPagination -生成一个对象 -调用对象的.page.paginate_queryset(books, request, view=self) -会有返回结果:把结果序列化,返回 -四个参数: 默认大小 default_limit = api_settings.PAGE_SIZE 查询的条数 limit_query_param = 'limit' 偏移的条数 offset_query_param = 'offset' 最多多少条 max_limit = None -加密分页: -from rest_framework.pagination import CursorPagination -生成一个对象 -调用对象的.page.paginate_queryset(books, request, view=self) -会有返回结果:把结果序列化,返回 -两个参数: 按什么排序 ordering = '-nid' page_size = 3
十一、响应器
1 原始的url -url(r'^books/', views.Book.as_view()), 2 视图类继承ViewSetMixin(as_view中必须传参数,字典形式) -url(r'^books/', views.Book.as_view(‘get':'get_all’)), 3 全自动路由(自动生成路由) from rest_framework import routers router=routers.DefaultRouter() # 两个参数,一个是匹配的路由,一个是视图中写的CBV的类 router.register('book',views.Book)
url(r'', include(router.urls)),
十二、版本控制
1、eg,参考连接https://i.cnblogs.com/EditPosts.aspx?opt=1
from rest_framework.response import Response from rest_framework.viewsets import ViewSetMixin from rest_framework.versioning import QueryParameterVersioning,AcceptHeaderVersioning,NamespaceVersioning,URLPathVersioning class Book(APIView): versioning_class=URLPathVersioning def get(self, request,*args,**kwargs): response = MyResponse() # print(request.GET.get('version')) # print(request.query_params.get('version')) print(request.version) books = models.Book.objects.all() ret = myserial.BookSer(instance=books, many=True) response.msg = '查询成功' response.data = ret.data return Response(response.get_dic)