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)
    
  • 相关阅读:
    解决maven托管项目中pom.xml存在坐标标红的问题
    Jquery取form表单中的所有参数
    解决IntelliJ IDEA控制台输出中文乱码问题
    Maven项目打包及jar包与war包的区别
    IDEA创建Maven web项目(项目结构组织、文件编译及运行明细)
    http学习笔记--报文构成
    http报文结构
    mount: unknown filesystem type 'vboxsf'
    使用shell做过时处理以及发送邮件的事例
    fuelphp 日志文件保存路径以及日志文件名变更中遇到的问题总结
  • 原文地址:https://www.cnblogs.com/NAG2020/p/12973726.html
Copyright © 2011-2022 走看看