zoukankan      html  css  js  c++  java
  • 技术博客6--Django实现列表分页

    技术博客

    Django框架下列表分页

    模型市场在进行模型展示时需要实现一个分页列表,使用Django框架实现。

    1. 接口设计

    请求消息
    GET  /api/market/market?  HTTP/1.1
    
    请求参数

    http 请求消息需要携带如下参数:

    • page

      当前所处页数

    • pagesize

      每页显示的模型数

    响应消息
    HTTP/1.1 200 OK
    Content-Type: application/json
    
    响应内容

    http 响应消息 body 中, 数据以json格式存储,

    如果获取信息成功,返回如下

    {
        'networklist': list(page_network_list),		# 页对象列表
        'page_num': range(1, page_num),				# 1~最大页数的数组
        'cur_page': page,							# 当前所在页数
        'next_page': next_page,						# 下一页的页数
        'previous_page': previous_page            	# 上一页的页数
    }
    

    2. 代码实现

    获取参数

    此处获取参数并对参数进行简单处理。

    def get(self, request):
            pagesize = request.GET.get('pagesize')
            if pagesize:		
                pagesize = int(pagesize)
            else:
                pagesize = 10
            
            page = request.GET.get('page')
            if page:
                page = int(page)
            else:
                page = 1
    
    引入Django分页组件
    from django.core.paginator import Paginator;	#重点
    
    def get(self, request):
            pagesize = request.GET.get('pagesize')
            if pagesize:
                pagesize = int(pagesize)
            else:
                pagesize = 10
            
            page = request.GET.get('page')
            if page:
                page = int(page)
            else:
                page = 1
            
            network_list = Network.objects.filter(Q(shared=True) & Q(sharable=True)).values('id', 'name', 'description', 'png')
            paginator = Paginator(network_list, pagesize)	# 根据指定的每页列表大小进行分页
    
            page_network_list = paginator.page(page)	# 根据页数获取特定页的列表
            page_num = paginator.num_pages		
    
            if page_network_list.has_next():
                next_page = page + 1
            else:
                next_page=page
            
            if page_network_list.has_previous():
                previous_page = page - 1
            else:
                previous_page = page
    
            data = {
                'networklist': list(page_network_list),
                'page_num': range(1, page_num),
                'cur_page': page,
                'next_page': next_page,
                'previous_page': previous_page
            }
            return Response(data=data, content_type='application/json', status=status.HTTP_200_OK)
    
  • 相关阅读:
    结对编程——四则运算
    需求分析
    结对编程
    调查问卷的心得体会
    软件工程课初步目标
    软件工程课程建议
    结对编程--fault,error,failure
    结对编程--四则运算
    需求分析
    结对编程
  • 原文地址:https://www.cnblogs.com/NAG2020/p/12973726.html
Copyright © 2011-2022 走看看