The rest-farmwork finisher

A simple page (see n-Page, Display of n)

Copy the code
from rest_framework.pagination Import PageNumberPagination
 # a basic use: url = url = http: //127.0.0.1 :? 8000 / pager / page = 2 & size = 3, size is not valid 
class   Pager (APIView):
     DEF GET (Self, Request, * args, ** kwargs):
         # get all data 
        RET = models.Book.objects.all ()
         # create page objects 
        Page = PageNumberPagination ()
         # get paged in the database data 
        page_list = page.paginate_queryset (ret, request, view = Self)
         # paging serializing 
        Ser = BookSerializer1 (= page_list instance, MANY = True)
         returnThe Response (ser.data)
 # two custom HTTP = url: //127.0.0.1: 8000 / pager / Page = 2 & size = 3? 
# Size = 30, invalid, up to five 
class Mypage (PageNumberPagination):
    PAGE_SIZE = 2 
    page_query_param = ' Page ' 
    # custom parameter passing 
    page_size_query_param = ' size ' 
    # data of a maximum of
    max_page_size = 5
class   Pager (APIView):
     DEF GET (Self, Request, * args, ** kwargs):
         # Get all data 
        RET = models.Book.objects.all ()
         # create page objects 
        Page = Mypage ()
         # get in the database paging data 
        page_list = page.paginate_queryset (RET, Request, View = Self)
         # paging serializing 
        Ser = BookSerializer1 (= page_list instance, MANY = True)
         # return Response (ser.data) 
        # this is returned Response object, but more than the basic Previous, Next, and the total number of data (to understand) 
        return page.get_paginated_response (ser.data)

Copy the code

setting in

= REST_FRAMEWORK {
     # Showing two 
    ' PAGE_SIZE ' : 2 
}

 routing:

url(r'^pager/$', views.Pager.as_view()),

 Serializers

class BookSerializer1(serializers.ModelSerializer):
    class Meta:
        model=models.Book
        # fields="__all__"
        exclude=('authors',)

 

 

Two offset tab (the n-th position, n data back view)

Copy the code
# Http://127.0.0.1:8000/pager/?offset=4&limit=3 
from rest_framework.pagination Import LimitOffsetPagination
 # can also be customized, with simple paging 
class   Pager (APIView):
     DEF GET (Self, Request, * args, ** kwargs):
         # get all data 
        RET = models.Book.objects.all ()
         # create page objects 
        Page = LimitOffsetPagination ()
         # get paged in the database data 
        page_list = page.paginate_queryset (RET, Request, View = Self )
         # paging serializing 
        Ser = BookSerializer1 (= page_list instance, MANY = True)
         # return page.get_paginated_response(ser.data)
        return Response(ser.data)
Copy the code

Three CursorPagination (encrypted page, only to see the previous and next, fast)

Thinking: do not override category, modify class properties?

Copy the code
from rest_framework.pagination Import CursorPagination
 # see the source, through the sql query, greater than, and less than id id 
class   Pager (APIView):
     DEF GET (Self, Request, * args, ** kwargs):
         # Get all data 
        RET = models.Book .objects.all ()
         # create page objects 
        Page = CursorPagination ()
        page.ordering = ' NID ' 
        # in the database acquired paging data 
        page_list = page.paginate_queryset (RET, Request, View = Self)
         # paging serializing 
        Ser = BookSerializer1 (= page_list instance, MANY = True)
         # avoided page guessed 
        return page.get_paginated_response (ser.data)
Copy the code

 

A simple page (see n-Page, Display of n)

Copy the code
from rest_framework.pagination Import PageNumberPagination
 # a basic use: url = url = http: //127.0.0.1 :? 8000 / pager / page = 2 & size = 3, size is not valid 
class   Pager (APIView):
     DEF GET (Self, Request, * args, ** kwargs):
         # get all data 
        RET = models.Book.objects.all ()
         # create page objects 
        Page = PageNumberPagination ()
         # get paged in the database data 
        page_list = page.paginate_queryset (ret, request, view = Self)
         # paging serializing 
        Ser = BookSerializer1 (= page_list instance, MANY = True)
         returnThe Response (ser.data)
 # two custom HTTP = url: //127.0.0.1: 8000 / pager / Page = 2 & size = 3? 
# Size = 30, invalid, up to five 
class Mypage (PageNumberPagination):
    PAGE_SIZE = 2 
    page_query_param = ' Page ' 
    # custom parameter passing 
    page_size_query_param = ' size ' 
    # data of a maximum of
    max_page_size = 5
class   Pager (APIView):
     DEF GET (Self, Request, * args, ** kwargs):
         # Get all data 
        RET = models.Book.objects.all ()
         # create page objects 
        Page = Mypage ()
         # get in the database paging data 
        page_list = page.paginate_queryset (RET, Request, View = Self)
         # paging serializing 
        Ser = BookSerializer1 (= page_list instance, MANY = True)
         # return Response (ser.data) 
        # this is returned Response object, but more than the basic Previous, Next, and the total number of data (to understand) 
        return page.get_paginated_response (ser.data)

Copy the code

setting in

= REST_FRAMEWORK {
     # Showing two 
    ' PAGE_SIZE ' : 2 
}

 routing:

url(r'^pager/$', views.Pager.as_view()),

 Serializers

class BookSerializer1(serializers.ModelSerializer):
    class Meta:
        model=models.Book
        # fields="__all__"
        exclude=('authors',)

 

 

Two offset tab (the n-th position, n data back view)

Copy the code
# Http://127.0.0.1:8000/pager/?offset=4&limit=3 
from rest_framework.pagination Import LimitOffsetPagination
 # can also be customized, with simple paging 
class   Pager (APIView):
     DEF GET (Self, Request, * args, ** kwargs):
         # get all data 
        RET = models.Book.objects.all ()
         # create page objects 
        Page = LimitOffsetPagination ()
         # get paged in the database data 
        page_list = page.paginate_queryset (RET, Request, View = Self )
         # paging serializing 
        Ser = BookSerializer1 (= page_list instance, MANY = True)
         # return page.get_paginated_response(ser.data)
        return Response(ser.data)
Copy the code

Three CursorPagination (encrypted page, only to see the previous and next, fast)

Thinking: do not override category, modify class properties?

Copy the code
from rest_framework.pagination Import CursorPagination
 # see the source, through the sql query, greater than, and less than id id 
class   Pager (APIView):
     DEF GET (Self, Request, * args, ** kwargs):
         # Get all data 
        RET = models.Book .objects.all ()
         # create page objects 
        Page = CursorPagination ()
        page.ordering = ' NID ' 
        # in the database acquired paging data 
        page_list = page.paginate_queryset (RET, Request, View = Self)
         # paging serializing 
        Ser = BookSerializer1 (= page_list instance, MANY = True)
         # avoided page guessed 
        return page.get_paginated_response (ser.data)
Copy the code

 

Guess you like

Origin www.cnblogs.com/majingjie/p/11139618.html