`

django分页

 
阅读更多
__author__ = 'Administrator'
from django.utils.safestring import mark_safe


class Page:
    def __init__(self, current_page, data_count, per_page_count=10, pager_num=7):
        self.current_page = current_page
        self.data_count = data_count
        self.per_page_count = per_page_count
        self.pager_num = pager_num

    @property
    def start(self):
        return (self.current_page - 1) * self.per_page_count

    @property
    def end(self):
        return self.current_page * self.per_page_count

    @property
    def total_count(self):
        v, y = divmod(self.data_count, self.per_page_count)
        if y:
            v += 1
        return v

    def page_str(self, base_url):
        page_list = []

        if self.total_count < self.pager_num:
            start_index = 1
            end_index = self.total_count + 1
        else:
            if self.current_page <= (self.pager_num + 1) / 2:
                start_index = 1
                end_index = self.pager_num + 1
            else:
                start_index = self.current_page - (self.pager_num - 1) / 2
                end_index = self.current_page + (self.pager_num + 1) / 2
                if (self.current_page + (self.pager_num - 1) / 2) > self.total_count:
                    end_index = self.total_count + 1
                    start_index = self.total_count - self.pager_num + 1

        if self.current_page == 1:
            prev = '<a class="page" href="javascript:void(0);">上一页</a>'
        else:
            prev = '<a class="page" href="%s?p=%s">上一页</a>' % (base_url, self.current_page - 1,)
        page_list.append(prev)

        for i in range(int(start_index), int(end_index)):
            if i == self.current_page:
                temp = '<a class="page active" href="%s?p=%s">%s</a>' % (base_url, i, i)
            else:
                temp = '<a class="page" href="%s?p=%s">%s</a>' % (base_url, i, i)
            page_list.append(temp)

        if self.current_page == self.total_count:
            nex = '<a class="page" href="javascript:void(0);">下一页</a>'
        else:
            nex = '<a class="page" href="%s?p=%s">下一页</a>' % (base_url, self.current_page + 1,)
        page_list.append(nex)

        jump = """
        <input type='text'  /><a onclick='jumpTo(this, "%s?p=");'>GO</a>
        <script>
            function jumpTo(ths,base){
                var val = ths.previousSibling.value;
                location.href = base + val;
            }
        </script>
        """ % (base_url,)

        page_list.append(jump)

        page_str = mark_safe("".join(page_list))

        return page_str

 

分享到:
评论

相关推荐

    Django分页器代码

    总之,Django分页器是处理大量数据的有效工具,`django-pure-pagination`作为Django的一个第三方库,提供了一种简单易用的方式来实现分页功能。通过以上步骤,你可以快速地在你的Django项目中集成并使用这个库,提升...

    Django 分页处理.zip

    在Python的Web开发框架Django中,分页处理是一项常用的功能,它可以帮助用户更有效地浏览大量数据,避免一次性加载所有内容导致页面响应慢或者内存占用过大。本教程将深入探讨如何在Django项目中实现分页处理。 ...

    Python开发Django 框架实现功能10. 用Django分页器实现文章分页.mp4

    Python开发Django 框架实现功能10. 用Django分页器实现文章分页.mp4

    Django分页/增删改查/部门管理系统

    Django分页+增删改查 演示地址:http://t.csdn.cn/8F3U7 演示地址:http://t.csdn.cn/8F3U7 演示地址:http://t.csdn.cn/8F3U7 演示地址:http://t.csdn.cn/8F3U7 演示地址:http://t.csdn.cn/8F3U7 演示地址:...

    Django分页查询并返回jsons数据(中文乱码解决方法)

    Django 分页查询并返回 json ,需要将返回的 queryset 序列化, demo 如下: # coding=UTF-8 import os from django.core import serializers from django.core.paginator import Paginator, PageNotAnInteger, ...

    Django 搜索结果分页的实现 以及点击下一页搜索条件丢失可能的原因分析

    1.Django 搜索结果分页的实现 在这里我们用django自带的分页模块来实现 这个paginator对象中带有如下属性: #per_page:每页显示条目数量 #count:数据总个数 #num_pages:总页数 #page_range:总页数的索引范围,如...

    django自定义分页插件,bootstrap+python+django分页插件

    django+python自定义分页插件,简单易用,只需要三行代码即可展示自定义分页,支持多个展示效果

    Django结合Bootstrap完美实现分页效果

    **一、Django分页原理** 在Django中,实现分页主要依赖于`django.core.paginator`模块。这个模块提供了`Paginator`类,可以将数据集分成一系列的小页面。通过传递查询集(queryset)和每页显示的项目数量,我们可以...

    Django+Paginator模块+LayUi实现分页(精简版)

    这次,给大家分享layui动态表格内置的方法结合django分页模块来实现表格的一系列操作,简单实用方便。 Django:非常强大的web开发框架 Paginator:Django自带的一个轻量级分页模块 layui:类UI(谐音),一款强大的...

    django实现分页的方法

    `Paginator`是Django分页的核心类,它接收四个参数: - `object_list`:这是一个可迭代对象,通常是Django的QuerySet,包含了需要分页的数据。 - `per_page`:每页显示的数据量。 - `orphans`:孤儿数,即允许...

    Django分页功能的实现代码详解

    总结来说,Django分页功能的实现涉及到项目的创建与配置、路由配置、使用Paginator进行数据分页、模板的编写与数据展示以及分页视图的细节处理。通过本文的介绍,我们可以了解到分页功能在Django项目中是如何一步步...

    django的分页器Paginator 从django中导入类

    ### Django的分页器Paginator详解 #### 一、前言 在Web开发中,当一个列表数据量过大时,为了提升用户体验以及减轻服务器压力,通常会采用分页的方式...希望本文能帮助读者更好地理解和掌握Django分页器的使用方法。

    B站武沛齐Django笔记和代码

    2022 B站最详细django3教程(django从入门到实践) 很适合刚学习django的同学 通过一个案例,把django的基本的templates,models,urls,from,modelfrom讲的清清楚楚,甚至还给了我们应用场景。

    解决Django中多条件查询的问题

    在Django中,进行多条件查询是常见的需求,特别是在开发复杂的Web应用时。本文将详细介绍如何在Django中解决多条件查询的问题,并提供一个实际的示例。 首先,我们需要了解Django的ORM(Object-Relational Mapping)...

    django-sorting:就像ericflo的django分页一样,但这是一种排序! 与ericflo的分页一起使用,显示表格分页和可排序的数据非常容易!

    这个库的设计灵感来源于Eric Florenzano(ericflo)的Django分页组件,旨在简化在网页上展示分页且可排序的数据表的工作流程。通过结合这两个工具,你可以轻松地创建交互式、高性能的数据展示界面,尤其适合处理大量...

    django试题发布和测验

    ** Django 试题发布和测验系统 ** Django是一个用Python编写的高级Web框架,它鼓励快速开发和实用主义设计。在这个"django试题发布和测验"项目中,开发者构建了一个小型的在线测试系统,允许用户创建并发布自己的...

Global site tag (gtag.js) - Google Analytics