django的快速顺序对象分页

django-sequential-pagination的Python项目详细描述


django顺序分页

使用“下一步”按钮按顺序对已排序的django查询集分页。与django-el-pagination完全兼容(但不依赖于它)。

分页是按对象id(或任何其他给出严格线性顺序的字段集)而不是按页码执行的。它不生成?page=2?page=3等链接,而是生成?from=11?from=21等链接。这将带来以下好处:

  • 分页工作得非常快,甚至在巨大的数据集上也是如此。例如,在postgres上,像?page=1000000这样的查询可能需要几秒钟(甚至几分钟)的“正常”分页。
  • 当在顶部注入新数据并改变页面边界时(这对于ajax分页特别重要),它可以防止在下一页出现重复。

缺点是没有对任意页码的导航,也没有反向导航,它总是只指向“下一页”的链接(或者在最后一页什么也没有)。

安装

pip install django-sequential-pagination

用法

django_sequential_pagination添加到INSTALLED_APPS

# settings.pyINSTALLED_APPS=[...'django_sequential_pagination',]

orderedqueryset传递给模板:

# views.pydefrecent_posts(request):returnrender(request,"blog/posts.html",{'posts':Post.objects.all().order_by('-time','-id'),})

请确保订单始终有一个领带断路器作为最后的关键,否则您可能会得到重复的页面边界。

现在,对模板中的对象分页:

{%loadpagination%}{%paginatepostsper_page=10aspage%}{%forpostinpage.objects%}
        <div>Post #{{post.id}}</div>
{%endfor%}{%ifpage.next_page_url%}
        <a href="{{page.next_page_url}}">Next</a>
{%endif%}

设置

您可以覆盖settings.py

中的默认设置
SEQUENTIAL_PAGINATION_PER_PAGE=20SEQUENTIAL_PAGINATION_KEY='from'# querystring key to use, as in ?from=XXXX

Django el分页

通过将其放入页面模板中,可以使用django-el-pagination启用无休止的分页:

{%paginatepostsper_page=10key='page'aspage%}{%forpostinpage.objects%}
        <div>Post #{{post.id}}</div>
{%endfor%}{%ifpage.next_page_url%}
        <nav class="endless_container">
                <ul class="pagination"><!-- Bootstrap v3 styles -->
                        <li>
                                <a class="endless_more" href="{{page.next_page_url}}" rel="{{page.key}}">Show more</a>
                        </li>
                </ul>
        </nav>
{%endif%}

<script>
        $.endlessPaginate({paginateOnScroll: true});
</script>

确保分页key(或SEQUENTIAL_PAGINATION_KEY)与AjaxListView.key匹配。默认值不同(frompage)。

金贾2

如果安装了jinja2,django_sequential_pagination.templatetags.pagination将是一个jinja2.contextfunction

此外,如果安装了django_jinja,它将自动注册为模板标记,因此您可以立即使用它:

{%setpage=paginate(posts,per_page=10)%}{%forpostinpage.objects%}
        <div>Post #{{post.id}}</div>
{%endfor%}{%ifpage.next_page_url%}
        <a href="{{page.next_page_url}}">Next</a>
{%endif%}

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
使用jaxb2annotateplugin和XJC工具的java自定义注释   java组织。xeustechnologies。jcl无法加载WstxInputFactory类   java JUnit在格式化字符串上比较失败   java Bukkit配置部分getKeys   如何关闭Java流?   java Struts2正则表达式配置   链式事务注释的java奇怪行为   java在两个JButton之间使用变量   java签署APK时内容会发生什么变化?   java LWJGL:Slick:3D世界中的绘图字体   如何分解Java数组?   在Java MySql中处理多个过滤器   java如何在Firebase数据库中跳过初始OnChildaded事件触发   java如何在PreviewView中使用CameraX?   在子类#中重写父类后访问父类原始方法的java已解决   java找不到类型的属性   游戏框架游戏!框架+Java