当前位置: 首页 > news >正文

批量插入数据与分页的原理及推导

批量插入数据

【1】准备数据

class Book(models.Model):title = models.CharField(max_length=32)

【2】一条一条插入

  • 后端
def ab_many(request):# (1)先给Book表插入一万条数据for i in range(1000):models.Book.objects.create(title=f'第{i}本书')# (2)将所有数据查询到并展示给前端页面book_queryset = models.Book.objects.all()return render(request, 'ab_many.html', locals())
  • 前端
{% for book_obj in book_queryset %}<p>{{ book_obj.title }}</p>
{% endfor %}

效果就是,有一种网络很高的感觉,页面一直在转圈圈

【3】优化-批量插入

def ab_many(request):# 批量插入boo_list = []for i in range(1000):book_obj = models.Book.objects.create(title=f'第{i}本书')boo_list.append(book_obj)models.Book.objects.bulk_create(boo_list)return render(request, 'ab_many.html', locals())
  • 当我们想向数据库批量插入数据的时候,使用ORM提供的bulk_create方法能够大大的减少操作的时间

分页的原理及推导

当查询的数据太多的时候,一页展示不完,分页码展示"""
总数据 		每页展示		总页数
100				10				10
101				10				11
99				10				10
怎么计算出来总页数
总数据  /  每页展示  =  总页数有余数+1
没有余数=商
"""
divmod
分页类
class Pagination(object):def __init__(self, current_page, all_count, per_page_num=2, pager_count=11):"""封装分页相关数据:param current_page: 当前页:param all_count:    数据库中的数据总条数:param per_page_num: 每页显示的数据条数:param pager_count:  最多显示的页码个数"""try:current_page = int(current_page)except Exception as e:current_page = 1if current_page < 1:current_page = 1self.current_page = current_pageself.all_count = all_countself.per_page_num = per_page_num# 总页码all_pager, tmp = divmod(all_count, per_page_num)if tmp:all_pager += 1self.all_pager = all_pagerself.pager_count = pager_countself.pager_count_half = int((pager_count - 1) / 2)@propertydef start(self):return (self.current_page - 1) * self.per_page_num@propertydef end(self):return self.current_page * self.per_page_num@propertydef page_html(self):# 如果总页码 < 11个:if self.all_pager <= self.pager_count:pager_start = 1pager_end = self.all_pager + 1# 总页码  > 11else:# 当前页如果<=页面上最多显示11/2个页码if self.current_page <= self.pager_count_half:pager_start = 1pager_end = self.pager_count + 1# 当前页大于5else:# 页码翻到最后if (self.current_page + self.pager_count_half) > self.all_pager:pager_end = self.all_pager + 1pager_start = self.all_pager - self.pager_count + 1else:pager_start = self.current_page - self.pager_count_halfpager_end = self.current_page + self.pager_count_half + 1page_html_list = []# 添加前面的nav和ul标签page_html_list.append('''<nav aria-label='Page navigation>'<ul class='pagination'>''')first_page = '<li><a href="?page=%s">首页</a></li>' % (1)page_html_list.append(first_page)if self.current_page <= 1:prev_page = '<li class="disabled"><a href="#">上一页</a></li>'else:prev_page = '<li><a href="?page=%s">上一页</a></li>' % (self.current_page - 1,)page_html_list.append(prev_page)for i in range(pager_start, pager_end):if i == self.current_page:temp = '<li class="active"><a href="?page=%s">%s</a></li>' % (i, i,)else:temp = '<li><a href="?page=%s">%s</a></li>' % (i, i,)page_html_list.append(temp)if self.current_page >= self.all_pager:next_page = '<li class="disabled"><a href="#">下一页</a></li>'else:next_page = '<li><a href="?page=%s">下一页</a></li>' % (self.current_page + 1,)page_html_list.append(next_page)last_page = '<li><a href="?page=%s">尾页</a></li>' % (self.all_pager,)page_html_list.append(last_page)# 尾部添加标签page_html_list.append('''</nav></ul>''')return ''.join(page_html_list)

相关文章:

批量插入数据与分页的原理及推导

批量插入数据 【1】准备数据 class Book(models.Model):title models.CharField(max_length32) 【2】一条一条插入 后端 def ab_many(request):# (1)先给Book表插入一万条数据for i in range(1000):models.Book.objects.create(titlef第{i}本书)# (2)将所有数据查询到并展…...

SMART PLC累计流量功能块(梯形积分法+浮点数累加精度控制)

S7-200SMART PLC数值积分器相关知识请参考下面文章链接: SMART PLC数值积分器功能块(矩形+梯形积分法完整源代码)-CSDN博客文章浏览阅读153次。PLC的数值积分器算法也可以参考下面文章链接:PLC算法系列之数值积分器(Integrator)-CSDN博客数值积分和微分在工程上的重要意义不…...

【金融分析】Python:病人预约安排政策 | 金融模拟分析

目录: 说明(Instructions) 问题描述(Problem Description) 仿真设置(Simulation Setting) 仿真过程的 Python 代码...

后端接口测试,令牌校验住,获取tocken 接口的方式

post : http://127.0.0.1:端口号/login { "username":"admin", "password":"admin123", "code":"3", "uuid":"966c34e409434f15942ec29a284da0a6" } headers tocken false...

Ghidra逆向工具配置 MacOS 的启动台显示(Python)

写在前面 通过 ghidra 工具, 但是只能用命令行启动, 不太舒服, 写个脚本生成 MacOS 的 app 格式并导入启动台. 不算复杂, 主要是解析包的一些元信息还有裁剪软件图标(通过 MacOS 自带的 API) 脚本 #!/opt/homebrew/bin/python3import os import re import subprocess as sp…...

关于交换芯片调试 tx_delay rx_delay 的一点经验

按照官方的介绍,需要用示波器 测量数据和时钟 实质相位差在2ns 左右,但是由于时钟 125M ,数据方波需要的示波器带宽更高,所以普通示波器是没有办法的,测试变形很大,所以调试的方法如下: 1.根据官方手册,先在设备树里设置跟手册示例一样的,保证ping的时候可以ping通,…...

【图像分类】【深度学习】【轻量级网络】【Pytorch版本】MobileNets_V2模型算法详解

【图像分类】【深度学习】【轻量级网络】【Pytorch版本】MobileNets_V2模型算法详解 文章目录 【图像分类】【深度学习】【轻量级网络】【Pytorch版本】MobileNets_V2模型算法详解前言MobleNet_V2讲解反向残差结构(Inverted Residuals)兴趣流形(Manifold of interest)线性瓶颈层…...

Spring Cloud 简介

1、简介 Spring CloudLevel up your Java code and explore what Spring can do for you.https://spring.io/projects/spring-cloud Spring Cloud 是一系列有序框架的集合&#xff0c;其主要的设施有&#xff0c;服务发现与注册&#xff0c;配置中心&#xff0c;消息总…...

Redis从入门到精通(二)- 入门篇

文章目录 0. 前言1. 入门篇[【入门篇】1.1 redis 基础数据类型详解和示例](https://icepip.blog.csdn.net/article/details/134438573)[【入门篇】1.2 Redis 客户端之 Jedis 详解和示例](https://icepip.blog.csdn.net/article/details/134440061)[【入门篇】1.3 redis客户端之…...

SpringDoc基础配置和集成OAuth2登录认证教程

本期内容 学会通过注解和Java代码的方式添加SpringDoc配置。在swagger-ui提供的页面上提供OAuth2登录认证&#xff0c;在集成Security的情况下便捷获取access_token并在请求时按照OAuth2规范携带。 为什么集成OAuth2登录认证&#xff1f; 现在大部分教程是在swagger-ui页面添…...

链路聚合-静态和动态区别

链路聚合之动静态聚合方式 链路聚合组是由一组相同速率、以全双工方式工作的网口组成。 1、动态聚合&#xff1a; 动态聚合对接的双方通过交互LACP(链路聚合控制协议)协议报文&#xff0c;来协商聚合对接。 优点&#xff1a;对接双方相互交互端口状态信息&#xff0c;使端口…...

发币成功,记录一下~

N年前就听说了这样一种说法——“一个熟练的区块链工程师&#xff0c;10分钟就可以发出一个新的币” 以前仅仅是有这么一个认识&#xff0c;但当时并不特别关注这个领域。 最近系统性学习中&#xff0c;今天尝试发币成功啦&#xff0c;记录一下&#xff5e; 发在 Sepolia Tes…...

一个完备的手游地形实现方案

一、地形几何方案&#xff1a;Terrain 与 Mesh 1.1 目前手游主流地形几何方案分析 先不考虑 LOD 等优化手段&#xff0c;目前地形的几何方案选择有如下几种&#xff1a; 使用 Unity 自带的 Terrain使用 Unity 自带的 Terrain&#xff0c;但是等美术资产完成后使用工具转为 M…...

vite vue3配置axios

准备 参考 安装axios yarn add axios中文官网 src下新建request文件夹&#xff0c;该文件下新建index.ts import axios from axios; import { ElMessage } from element-plus;// const errorCodeType function (code: number): string { // let errMessage: string 未知…...

使用 C 语言快速排序将字符串按照 ASCII 码升序排列

示例代码&#xff1a; #include <stdio.h> #include <string.h> #include <stdlib.h>static Comp(const void *a, const void *b) {char *pa (char *)a;char *pb (char *)b;return strcmp(a, b); }int main(void) {char strs[3][10] { "bd", &q…...

自动化运维中间件架构概况

自动化运维中间件架构概况 kubernetesjenkins 安装k8s后 设置 Jenkins 任务: 在 Jenkins 中创建一个新的任务&#xff1a; 配置源代码管理&#xff1a;选择 Git&#xff0c;并提供 GitLab 仓库的 URL、凭据和分支信息。配置构建步骤&#xff1a;选择 Maven 构建&#xff0c;…...

fractional Brownian Motion driven stochastic integrals

See https://mathoverflow.net/questions/304366/fractional-brownian-motion-driven-stochastic-integrals...

c++模式之单例模式详解

c模式之单例模式详解 1.概念2.懒汉模式示例&#xff08;缺点&#xff09;3.懒汉模式线程安全4.饿汉式创建单例5.饿汉模式线程示例 1.概念 单例模式是指在整个系统生命周期内&#xff0c;保证一个类只能产生一个实例&#xff0c;确保该类的唯一性. 使用单例两个原因&#xff1a…...

【gpts】学算法题[缺失的第一个正数](https://leetcode.cn/problems/first-missing-positive/)

给出你的题解 (https://leetcode.cn/problems/first-missing-positive/) public class Solution { public int firstMissingPositive(int[] nums) {int len nums.length;for (int i 0; i < len; i) {while (nums[i] > 0 && nums[i] < len && nums…...

车牌识别 支持12种中文车牌类型 车牌数据集下载

开源代码 如果觉得有用&#xff0c;不妨给个Star⭐️&#x1f31f;支持一下吧~ 谢谢&#xff01; Acknowledgments & Contact 1.WeChat ID: cbp931126 2.QQ Group&#xff1a;517671804 加微信(备注&#xff1a;PlateAlgorithm),进讨论群可以获得10G大小的车牌检测和识…...

Claude Code 用户如何快速切换至 Taotoken 稳定服务

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Claude Code 用户如何快速切换至 Taotoken 稳定服务 对于使用 Claude Code 进行开发的工程师而言&#xff0c;服务稳定性是保障开发…...

CANN/hccl:自定义通信算子 - 点对点通信

自定义通信算子 - 点对点通信 【免费下载链接】hccl 集合通信库&#xff08;Huawei Collective Communication Library&#xff0c;简称HCCL&#xff09;是基于昇腾AI处理器的高性能集合通信库&#xff0c;为计算集群提供高性能、高可靠的通信方案 项目地址: https://gitcode…...

CANN/ops-math填充算子文档

aclnnInplaceFillScalar 【免费下载链接】ops-math 本项目是CANN提供的数学类基础计算算子库&#xff0c;实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-math &#x1f4c4; 查看源码 产品支持情况 产品是否支持Ascend 950PR/Ascend 950DT√Atla…...

如何两台atlas-a2服务器物理机,基于vllm-ascend部署qwen3.5 397b-w8a8-mtp大模型

配置 两台8*64的昇腾910b4服务器物理机&#xff0c;未做任何虚拟化&#xff0c;已经通过交换机进行互联 模型和镜像下载 模型&#xff1a; https://modelscope.cn/models/Eco-Tech/Qwen3.5-35B-A3B-w8a8-mtp 镜像&#xff08;不是openeuler系统就下不带openeuler的&#xff…...

CANN/sip BLAS点积算子文档

Dot 【免费下载链接】sip 本项目是CANN提供的一款高效、可靠的高性能信号处理算子加速库&#xff0c;基于华为Ascend AI处理器&#xff0c;专门为信号处理领域而设计。 项目地址: https://gitcode.com/cann/sip 产品支持情况 产品是否支持Atlas 200I/500 A2 推理产品At…...

告别横屏限制!为你的Arduino/STM32 OLED项目添加竖屏显示功能(SH1107驱动适用)

突破显示边界&#xff1a;SH1107 OLED竖屏显示的工程实践指南 当你在开发智能家居控制面板或便携式传感器设备时&#xff0c;是否曾为横屏OLED显示的文字阅读体验不佳而困扰&#xff1f;传统SH1107驱动芯片仅支持180度旋转&#xff0c;无法满足现代用户对竖屏显示的自然阅读需求…...

嵌入式系统未来演进:从摩尔定律终结到跨学科融合的技术路径

1. 从硅谷果园到未来预言&#xff1a;一位物理学家的嵌入式视野2010年春天&#xff0c;在圣何塞举办的嵌入式系统大会上&#xff0c;当加来道雄博士走上讲台时&#xff0c;台下坐着的是一群最务实的人——嵌入式系统工程师、硬件开发者、产品经理。他们的日常是与寄存器、时序、…...

为Godot引擎深度集成Lua:模块编译、特性解析与开发实践

1. 项目概述&#xff1a;为Godot引擎注入Lua灵魂如果你和我一样&#xff0c;既是Godot引擎的忠实拥趸&#xff0c;又对Lua脚本语言那简洁、高效和易于嵌入的特性情有独钟&#xff0c;那么你肯定也想过一个问题&#xff1a;为什么Godot不能原生支持Lua呢&#xff1f;GDScript固然…...

Godot 4与Blender无缝资产导入:Importality插件原理与实战

1. 项目概述&#xff1a;当Godot 4遇上Blender&#xff0c;一场资产导入的革命如果你是一名独立游戏开发者&#xff0c;或者是一个小型游戏工作室的成员&#xff0c;那么你大概率对这两个名字不陌生&#xff1a;Godot和Blender。前者是一个功能强大、开源免费的游戏引擎&#x…...

基于Docker镜像快速部署本地大模型推理服务:以Qwen为例

1. 项目概述&#xff1a;从模型镜像到本地推理的完整实践最近在开源社区里&#xff0c;一个名为yassa9/qwen600的模型镜像引起了我的注意。乍一看&#xff0c;这像是一个基于通义千问Qwen系列模型构建的Docker镜像&#xff0c;但深入探究后&#xff0c;我发现它远不止是一个简单…...