django学习——如何实现分页时序号的连续
2018-01-27 13:49
309 查看
在django中,一般通过自带的Paginator进行分页,具体内容可以见官方文档。
我们在对数据进行循环时,如果需要标上序号,可以采用forloop方法,如下所示:
具体使用细节,可以见我之前的博客:采用forloop对模板中的数据进行排序
然而,通过这种方法,在点击下一页后,序号还是从1开始,不能接着上一页中的最后一个的序号累加。解决思路如下:
获得当前页面的页码,乘以每页展示的对象数目,在加上{{ forloop.counter }}即可
当前页面的页码可以通过
django 中的模板中不能进行加减乘除运算,直接能通过过滤器实现,加法的过滤器是
每个页面展示的对象数目可以在setting.py中定义,然而模板中是不能直接获得该常量的,需要将该常量添加到上下文管理器中
针对以上思路,具体操作如下:
1、自定义乘法过滤器
原理见官方文档,这里只给出步骤:
首先在你的项目下,建立一个
在
在模板中,可以这么写:
这里page.number代表当前页面的页码,也就是第几页,对应的是刚才定义的过滤器
这样,在其基础上加上forloop.counter即可,如下:
2、将setting.py中的常量添加到模板中
上面的代码中显示的每页数目是5,当对其改变的话,还需要将模板中的都改过来,如果页面多的话,改起来很麻烦,不符合程序设计原则。我们可以将值在setting.py中设定,然后添加到上下文管理器中,这样在整个模板中就可以用了。
本方法参考于:https://stackoverflow.com/questions/433162/can-i-access-constants-in-settings-py-from-templates-in-django
首先,在setting.py中设定每页的数量
然后,在你的app目录下建立一个
然后,再将其在setting.py中的
最后,直接在模板中就可以使用该变量
如下:
如此,即可实现翻页后序号的连续。
我们在对数据进行循环时,如果需要标上序号,可以采用forloop方法,如下所示:
{{ forloop.counter }}
具体使用细节,可以见我之前的博客:采用forloop对模板中的数据进行排序
然而,通过这种方法,在点击下一页后,序号还是从1开始,不能接着上一页中的最后一个的序号累加。解决思路如下:
获得当前页面的页码,乘以每页展示的对象数目,在加上{{ forloop.counter }}即可
当前页面的页码可以通过
page.number获得
django 中的模板中不能进行加减乘除运算,直接能通过过滤器实现,加法的过滤器是
|add,并没有乘法的过滤器,因此我们需要自定义一个乘法过滤器
每个页面展示的对象数目可以在setting.py中定义,然而模板中是不能直接获得该常量的,需要将该常量添加到上下文管理器中
针对以上思路,具体操作如下:
1、自定义乘法过滤器
原理见官方文档,这里只给出步骤:
首先在你的项目下,建立一个
templatetags的包,里面新建一个py文件,名字任意,本人的如下:
在
blog_tags.py中写入:
from django import template register = template.Library() @register.filter def multiply(value, num): #定义一个乘法过滤器 return (value-1)*num
在模板中,可以这么写:
{% load blog_tags %} ... {{ page.number|multiply: 5 }}
这里page.number代表当前页面的页码,也就是第几页,对应的是刚才定义的过滤器
multiply函数中的
value值。 5对应的是函数中的num值。
这样,在其基础上加上forloop.counter即可,如下:
{{ page.number|multiply: 5|add:forloop.counter }}
2、将setting.py中的常量添加到模板中
上面的代码中显示的每页数目是5,当对其改变的话,还需要将模板中的都改过来,如果页面多的话,改起来很麻烦,不符合程序设计原则。我们可以将值在setting.py中设定,然后添加到上下文管理器中,这样在整个模板中就可以用了。
本方法参考于:https://stackoverflow.com/questions/433162/can-i-access-constants-in-settings-py-from-templates-in-django
首先,在setting.py中设定每页的数量
HAYSTACK_SEARCH_RESULTS_PER_PAGE = 5 #分页数目
然后,在你的app目录下建立一个
context_processors.py,写入:
from django.conf import settings def pageNums(request): return {"HAYSTACK_SEARCH_RESULTS_PER_PAGE": settings.HAYSTACK_SEARCH_RESULTS_PER_PAGE}
然后,再将其在setting.py中的
context_processors进行绑定,如下:
TEMPLATES = [ { ... 'OPTIONS': { ... 'blog.context_processors.pageNums', ], }, }, ]
最后,直接在模板中就可以使用该变量
HAYSTACK_SEARCH_RESULTS_PER_PAGE
如下:
{{ page.number|multiply:HAYSTACK_SEARCH_RESULTS_PER_PAGE|add:forloop.counter }}
如此,即可实现翻页后序号的连续。
相关文章推荐
- Django分页后,序号如何按照数据自增
- bootstrap table实现server分页序号连续(当前页从上一页的结束序号开始)
- django学习——用户注册时如何实现验证码图片
- volist 自增序号 分页如何实现?
- BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
- 人工智能如何模拟动物大脑实现连续学习
- django学习——如何实现简单的搜索功能
- django 实现分页下一页序号自增
- [ASP.NET2.0]如何利用 DataReader 实现分页
- jfreechart的线性图是所有的点的连接,线是连续的。如何实现间断的线性图呢?即一条线,当满足某个条件:如值为零时,线在此中断,只连接相邻的不为零的点。
- 探讨如何在有着1000万条数据的MS SQL SERVER数据库中实现快速的数据提取和数据分页
- 如何在DataGrid控件中实现自定义分页
- 如何实现space多个音乐自动连续播放
- 如何实现XML+XSL+javascript数据分页
- Community Server 2.0 学习笔记:如何实现在线人数?
- 如何用C的CGI实现网页的分页显示功能?
- 如何在DataGrid控件中实现自定义分页
- 探讨如何在有着1000万条数据的MS SQL SERVER数据库中实现快速的数据提取和数据分页
- 如何在DataGrid控件中实现编辑、删除、分类以及分页操作
- 如何实现交互式的图像处理(学习ing)?