python3 django动态分页引发的list切片下标越界问题
起先是扒了一个包,动态分页的,但这个包分页之前要加载全部的数据,我这东西后台是个爬虫,不一定浏览的完所以这么做有点浪费资源,于是我改造了一下。
# :param obj_count: 获得 条目总数
# :param obj_perpage: 定义 每页显示条目数
# :param pagetag_current: 获得 当前页码
# :param pagetag_dsp_count: 定义 显示多少个页码 这是包的参数 根据这些实现分页
obj_count = len(你的数据)
之前我是爬完所有数据传进来,现在改成直接爬总条目。 obj_count = 总条目 然后之前给页面的值是这样
obj=你的数据[xx.obj_slice_start:xx.obj_slice_end]
xx.obj_slice_start和xx.obj_slice_end 就是通过切片给页面传递值 我看了下代码,这俩参数是通过当前页码-1*条目数,当前页码*条目数获得的。
比如说每页20条,当前第2页,就是你的数据[2-1*20:2*20]这样。 但我改完之后因为这个时候还没有数据,所以不能这么用。
obj = get_data(page_list[int(pagetag_current) - 1])
这是改完之后的,自己那俩函数就不贴了,写的比较丑。
思路就是page_list里边是爬取目标的所有分页,根据pagetag_current也就是当前页码作为下标(0起所以-1)确定爬取的页面,然后用get_data爬取这个页面。 最后出问题了,排查发现是我搞错了每页的显示条目,我设定的是20,但page_list里每一页展示的是25条,所以比如说总条目69,会分成4页,但我page_list里只有3页,就是3个元素,
加载尾页会直接越界 pagetag_current=4(尾页)(get_data(page_list[pagetag_current) - 1 也就是3 提示越界 实际只有0 1 2]))。 解决方式就是每页显示的条目数=25,然后想了一下,原作者那种方式应该也会面临越界问题,比如总条目69(为什么总要用69做例子 因为我喜欢 你懂得),用他切片的方式就是0:20 20:40 40:60 60:80
还是大牛想的多,不像我碰到问题才去琢磨处理(虽然最后那不算处理)。
赶紧去看看他的代码学习一下怎么处理的,翻了2遍也没找到处理越界的地方,最后疑惑的加了输出测试了一下,居然就是直接给的越界下标,查了一下,我擦,原来切片越界是不报的。 不管咋说,也算是学了点新东西,虽然这个动态分页还是不够完美,但也算改造成功了,加载一页爬一页数据,不像之前分页前就得爬完所有数据,不好地方就是现在每页显示的条目要根据爬取页面的一致。下一步计划把get_data写的智能一些,可以精准的获取数据。
python3 django动态分页引发的list切片下标越界问题的更多相关文章
- Tornado-基于正则的路由和动态分页
概览 这一小节涉及了三部分内容: 1.动态分页设计 2.基本的路由系统以及基于正则的路由 3.模块引擎的继承和导入 4.web项目文件夹和ReuquestHandler的分类 5.跨站脚本攻击 文件结 ...
- Django—自定义分页
分页功能在每个网站都是必要的,对于分页来说,其实就是根据用户的输入计算出应该显示在页面上的数据在数据库表中的起始位置. 确定分页需求: 1. 每页显示的数据条数 2. 每页显示页号链接数 3. 上一页 ...
- django之分页,纯python代码
Django中分页 py文件代码 """ 自定义分页组件 可以返回分页的数据和分页的HTML代码 """ from django.http ...
- django 动态更新属性值
django 动态更新属性值 class TestTime(models.Model): """ 功能说明:指定测试的每一关总用时 """ ...
- DedeCMS织梦动态分页类,datalist标签使用实例
<?php require_once(dirname(__FILE__)."/include/common.inc.php");//载入基础文件 require_once(D ...
- Java 动态分页类
动态分页类: Cls_page.java package pagination; public class Cls_page { private int nums;// 总条目数 private i ...
- LayUI分页,LayUI动态分页,LayUI laypage分页,LayUI laypage刷新当前页
LayUI分页,LayUI动态分页,LayUI laypage分页,LayUI laypage刷新当前页 >>>>>>>>>>>> ...
- 第二十一章 Django的分页与cookie
第二十一章 Django的分页与cookie 第一课 模板 1.模板的继承 在Template目录下新建模板master.html <!DOCTYPE html> <html lan ...
- Python Django的分页,Form验证,中间件
本节内容 Django的分页 Form 中间件 1 Django 分页 1.1 Django自带的分页 1.首先来看下我的测试数据环境 ############ models.py ######### ...
随机推荐
- Zbrush 4R7中的镜像功能是怎么使用的?
ZBrush一款3D图形绘制软件,功能十分强大,在雕刻建模的时候镜像工具是我们经常要用到的,它可以方便快捷雕刻对称的模型,那么ZBrush®中怎样镜像呢,本文小编将做详细介绍. ZBrush 3D镜像 ...
- 面试题-mysql
Sql :UPDATE test SET sex = CASE sex WHEN 'm' THEN 'f' ELSE 'm' END;
- input type=”file“ change事件只执行一次的问题
js解决办法 HTML:<input id="file",type="file" onchange="upload()" /> ...
- kali 安装openvas
因为Kali Linux上没有默认安装OpenVas,因此只好自己摸索着安装了一遍. 如果没有设置过源(/etc/apt/sources.list),设置如下: deb http://http.kal ...
- P1423 小玉在游泳
... 题目描述 小玉开心的在游泳,可是她很快难过的发现,自己的力气不够,游泳好累哦.已知小玉第一步能游2米,可是随着越来越累,力气越来越小,她接下来的每一步都只能游出上一步距离的98%.现在小玉想知 ...
- nginx 301 重定向设置不含www到www域名
如果需要将不含www主机的域名301重定向到含www的域名,如将 shwww.net 重定向至 www.shwww.net,nginx 配置指令如下: server { server_name shw ...
- Windows使用docker打开新窗口error解决办法
环境 win7 Error: error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.26/containers/json ...
- hdu 3177贪心
#include<stdio.h>/*只能按这种形式排序单纯一种形式是不对的,按ai排序 20 2 1 1 10 20 按bi排序 20 2 5 17 1 16 都是不对的 二a.u+b. ...
- [HTML 5] Atomic Relevant Busy
Together 'aria-live', we can use 'aria-atomic', 'aria-relevant' and 'aria-busy' to give more informa ...
- Zookeeper源代码编译为Eclipseproject(win7下Ant编译)
为了深入学习ZooKeeper源代码,首先就想到将其导入到Eclispe中,所以要先将其编译为Eclispeproject. 1.什么是Ant??? Apache Ant™ Apache Ant is ...