zoukankan      html  css  js  c++  java
  • rest_framwork中ApiView实现分页

     1 from rest_framework.pagination import PageNumberPagination
     2 from .serializers import BookSerilizer
     3 from .models import BookInfo
     4 from rest_framework.views import APIView
     5 # Create your views here.
     6 class MyPageNumberPagination(PageNumberPagination):
     7     page_size=2  #默认两个
     8     max_page_size = 5  #一页显示最大5个
     9     page_query_param = 'page'  #页码
    10 
    11 class Pager1View(APIView):
    12     def get(self,request):
    13         #获取所有数据
    14         roles = BookInfo.objects.all()
    15         #创建分页对象
    16         pg = MyPageNumberPagination()
    17         #在数据库中获取分页数据
    18         pager_roles = pg.paginate_queryset(queryset=roles, request=request,view=self)
    19         #对分页数据进行序列化
    20         ser = BookSerilizer(instance=pager_roles, many=True)
    21         return pg.get_paginated_response(ser.data)  #返回上一页或者下一页

     html页面

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script type="text/javascript" src="/static/js/jquery-3.2.1.js"></script>
    </head>
    
    <body>
    <h2>书籍管理</h2>
    <div id="context">
        <ul id="items"></ul>
    
        <button id="prev">上一页</button>
        <button id="next">下一页</button>
    </div>
    </body>
    
    <script type="text/javascript">
        //页面初始化加载
        $(function () {
            every_page()
        });
    
        //页码循环函数
        function every_page(page_url='/books/?page=1') {
            $.get(
                page_url,
                function (data) {
                    $('#items').empty();
                    $('#next').attr('next_page',data['next']);
                    $('#prev').attr('prev_page',data['previous']);
    
                    $.each(data['results'],function (index,val) {
                        $('#items').prepend('<li>书名:'+val.bname+',作者:'+val.author+'</li>')
                    })
                }
            )
        }
    
        //下一页点击事件
        $('#next').on('click',function () {
                var next_page = $(this).attr('next_page');
                            //取不到就是 undefined
                if (next_page != undefined){
                    every_page(next_page)
                }
        });
    
        //上一页点击事件
        $('#prev').on('click',function () {
                var prev_page = $(this).attr('prev_page');
                             //取不到就是 undefined
                if (prev_page != undefined){
                    every_page(prev_page)
                }
        })
    
    </script>
    </html>
  • 相关阅读:
    MVVM教程[资源+分析]
    WPF 多点触摸开发[1]:Windows 7 安装多点触屏模拟器
    wpf 打印 之PirintVisual
    WPF:PrintVisual的问题
    几个漂亮的Button的CSS
    很不错的后台界面收集[提供下载]
    网页刷新方法集合
    JS各种各样的拖动效果
    CSS+DIV(盒子)
    网页刷新方法集合
  • 原文地址:https://www.cnblogs.com/lvye001/p/9938400.html
Copyright © 2011-2022 走看看