array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 python---django中自带分页类使用 - 爱码网

请先看在学习tornado时,写的自定义分页类:思路一致;

python---自定义分页类

1.基础使用:

后台数据获取:

from django.core.paginator import Paginator,PageNotAnInteger,EmptyPage#错误判断
List_info
= [] for i in range(1000): List_info.append("news%d"%i) def get_page(req): current_page = req.GET.get('p') paginator = Paginator(List_info,10) #传入总数据和每页显示的数据
  #含有属性:
  #per_page:每页显示条数上面的10
  #count数据总数
  #num_pages:总页数
  #page_range:总页数索引范围
  #page:page对象
try: posts = paginator.page(current_page)
     #page对象含有方法:
     #has_next:判断是否有下一页
     #has_previous:判断是否有上一页
     #next_page_number:下一页页码
     #previous_page_number:上一页页码
     #number:当前页  注意:这个是属性,其他是方法,需要加上()
     #paginator:paginator对象 except PageNotAnInteger: posts
= paginator.page(1) except EmptyPage: posts = paginator.page(paginator.num_pages) #num_pages数总页数,最后一页 return render(req,'get_page.html',{'posts':posts})

前端代码:

    <div class="content">
        {% for item in posts %}
            <p>{{ item }}</p>
        {% endfor %}
    </div>
    <div>
        <span>
            {% if posts.has_previous %}  #模板中调用函数不要()
                <a href="/page.html?p={{ posts.previous_page_number }}">prev</a>
            {% endif %}
            <span class="current">
                Page {{ posts.number }} of {{ posts.paginator.num_pages }}
            </span>
            {% if posts.has_next %}
                <a href="/page.html?p={{ posts.next_page_number }}">next</a>
            {% endif %}
        </span>
    </div>

2.扩展内置分页:

类修改:

from django.core.paginator import Paginator

class CustomPagimator(Paginator):
    def __init__(self,current_page,max_page_num,*args,**kwargs):
        self.current_page = int(current_page)  #当前页  #自定义变量
        self.max_page_num = max_page_num    #可以显示多少页  #自定义变量
        super(CustomPagimator,self).__init__(*args,**kwargs)

    def page_num_range(self):
        # self.num_pages 总页数
        part_num = int(self.max_page_num/2)
        if self.num_pages <= self.max_page_num:  #先判断总页数和运行显示的页数大小
            return range(1, self.num_pages + 1)
        if self.current_page <= part_num:  #再取半分析
            return range(1,self.max_page_num+1)
        elif self.current_page+part_num>= self.num_pages:
            return range(self.num_pages-self.max_page_num,self.num_pages+1)
        else:
            return range(self.current_page - part_num, self.current_page + part_num + 1)

类调用:

List_info = []
for i in range(1000):
    List_info.append("news%d"%i)

from 模块.自定义分页类文件 import 自定义分页类CustomPagimator
def get_page(req): current_page
= req.GET.get('p') paginator = CustomPagimator(current_page=current_page, max_page_num=5,object_list=List_info,per_page=10) #传入总数据和每页显示的数据 try: posts = paginator.page(current_page) except PageNotAnInteger: posts = paginator.page(1) except EmptyPage: posts = paginator.page(paginator.num_pages) #num_pages数总页数,最后一页 page_html = paginator.page_num_range() return render(req,'get_page.html',{'posts':posts,"page_html":page_html})

前端使用:

    <div>
        <span>
            {% if posts.has_previous %}
                <a href="/page.html?p={{ posts.previous_page_number }}">prev</a>
            {% endif %}
            <span class="page">
                {% for i in page_html %}
                    <a href="/page.html?p={{ i }}">{{ i }}</a>
                {% endfor %}
            </span>
            <span class="current">
                Page {{ posts.number }} of {{ posts.paginator.num_pages }}
            </span>
            {% if posts.has_next %}
                <a href="/page.html?p={{ posts.next_page_number }}">next</a>
            {% endif %}
        </span>
    </div>

 

相关文章:

  • 2018-03-22
  • 2018-06-30
  • 2019-10-11
  • 2019-12-13
  • 2018-04-25
  • 2019-12-20
  • 2018-08-10
  • 2019-06-17
猜你喜欢
  • 2021-12-01
  • 2019-11-22
  • 2019-03-04
  • 2018-03-11
  • 2021-11-08
  • 2018-11-14
  • 2019-01-16
  • 2019-06-19
相关资源
相似解决方案