首页 > 其他分享 >Django中使用分页器

Django中使用分页器

时间:2023-05-13 10:57:56浏览次数:41  
标签:分页 get page 使用 dish Django id name

场景描述

有一个get请求,如果传递的有id,则返回具体某一个菜品的信息,如果没有,则返回当前默认分页的内容,获取用户传递的分页参数进行查询。

分页说明

如果数据量很大,几百上千条,一般是需要使用分页器的,这样可以对用户,对服务器,对网络都比较友好。
如果当前框架不提供分页查询功能,也就是我们需要手动设置pagepageSize去进行分页查询,获取到全部数据后进行切割,返回具体的某一条数组信息即可。
但是在django中已经给我们提供了分页的功能,使用起来非常方便

django中使用分页

from django.core.paginator import Paginator
from django.http import JsonResponse

def get(self, request):
    id = request.GET.get('id')
    if id is not None:
        dish = Dish.objects.filter(id=id).first()
        obj = {
            'id': dish.id,
            'name': dish.dish_name,
            'price': dish.dish_price,
            'desc': dish.dish_desc,
            'cover': dish.dish_img,
            'order_count': dish.order_count,
            'type': dish.dish_type_id
        }
        return JsonResponse({"DishInfo": obj})
    
    page_num = request.GET.get('page', 1)
    page_size = request.GET.get('page_size', 10)
    
    dishes = Dish.objects.select_related('dish_type').all()
    paginator = Paginator(dishes, page_size)
    page = paginator.get_page(page_num)
    
    dish_list = []
    for dish in page:
        obj = {
            'id': dish.id,
            'name': dish.dish_name,
            'price': dish.dish_price,
            'desc': dish.dish_desc,
            'cover': dish.dish_img,
            'order_count': dish.order_count,
            'type': dish.dish_type.name
        }
        dish_list.append(obj)
    
    return JsonResponse({
        "status": "success", 
        "data": {
            "dish_list": dish_list, 
            "total": paginator.count,
            "page_num": page_num,
            "page_size": page_size
        }
    })

标签:分页,get,page,使用,dish,Django,id,name
From: https://www.cnblogs.com/zx529/p/17396911.html

相关文章

  • 使用讯飞模型学习Excel VLOOKUP的一次体验
    提问1:EXCELVLOOKUP回答1:VLOOKUP是Excel中的一种查找函数,用于在一个表格中查找某个值,并返回该值所在行的指定列的值。其语法如下:```VLOOKUP(lookup_value,table_array,col_index_num,[range_lookup])```其中:-lookup_value:要查找的值。-table_array:要在其中进行查找的......
  • 利用FPGA对cameralink的数据进行发送编码。 不使用DS90CR
    利用FPGA对cameralink的数据进行发送编码。不使用DS90CR287芯片,直接在FPGA内部进行编码。调通案例见下图。本人在xilinx(赛灵思)A7,K7,V7,zynq7,ultrascale以及ultrascale+系列的FPGA上已经验证通过,相关项目已经交付。本人在此深耕多年,完全掌握cameralink传输标准,解码编码标准,现承接定......
  • 关于 Delphi 中流的使用 压缩与解压缩的函数
    unitUnit1;interfaceuses Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms, Dialogs,StdCtrls;type TForm1=class(TForm)  Button1:TButton;  Button2:TButton;  procedureButton1Click(Sender:TObject); ......
  • 关于 Delphi 中流的使用 分割与合并文件的函数
    unitUnit1;interfaceuses Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms, Dialogs,StdCtrls;type TForm1=class(TForm)  Button1:TButton;  Button2:TButton;  procedureButton1Click(Sender:TObject); ......
  • Django如何把SQLite数据库转换为Mysql数据库
    大部分新手刚学Django开发的时候默认用的都是SQLite数据库,上线部署的时候,大多用的却是Mysql。那么我们应该如何把数据库从SQLite迁移转换成Mysql呢?之前我们默认使用的是SQLite数据库,我们开发完成之后,里面有许多数据。如果我们想转换成Mysql数据库,那我们先得把旧数据从SQLite导出......
  • 关于 Delphi 中流的使用 用流读写结构化文件
    unitUnit1;interfaceuses Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms, Dialogs,StdCtrls;type TForm1=class(TForm)  Memo1:TMemo;  {添加Memo显示内容}  Button1:TButton;  Button2:TButton; ......
  • 利用FPGA对cameralink的数据进行接收解码 不使用DS90CR288芯
    利用FPGA对cameralink的数据进行接收解码不使用DS90CR288芯片,直接在FPGA内部进行解码。本人在xilinx(赛灵思)A7,K7,V7,zynq7,ultrascale以及ultrascale+系列的FPGA上已经验证通过,相关项目已经交付。ID:7599648743056668......
  • 关于 Delphi 中流的使用 用 TMemoryStream(内存流) 入门
    所谓"流",就是一段数据或是一块内存;在进行流操作时,我们不必关心流中的数据到底是什么;只需要知道流的大小和当前的指针位置.所以流只有两个属性:Size、Position.对流的操作,不过就是读取和写入.所以流最主要的方法就是Read和Write.在很多控件的使用中,读取主要用Load......
  • 关于 Delphi 中流的使用 遍历读取流中的所有数据
    unitUnit1;interfaceuses Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms, Dialogs,StdCtrls;type TForm1=class(TForm)  Memo1:TMemo;  Memo2:TMemo;{需要添加两个Memo用于显示}  Button1:TButton;  ......
  • Django笔记四十之运行Django环境的python脚本
    本文首发于公众号:Hunter后端原文链接:Django笔记四十之运行Django环境的python脚本这一篇笔记介绍如何在Django中运行脚本。假设说我们要实现一个功能,需要获取blog.models.Blog这张表里的总数且使用print()输出。如果代码逻辑很短,且是一次性执行的操作,我们可以在系统的......