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)
    
  • 相关阅读:
    使用duilib链接错误 _declspec(dllimport)
    USB磁盘VID和PID 对应到次盘盘符相关文章
    路径拆分函数
    COM问题
    将对话框嵌入父窗体
    duilib的caption上的Edit无法激活
    LoadLibrary失败,GetLastError MOD_NOT_FOUND
    windows字符串
    windows界面库种类
    windows插件框架
  • 原文地址:https://www.cnblogs.com/NAG2020/p/12973726.html
Copyright © 2011-2022 走看看