Django-博客分页

  • 导入django内置的分页器
    from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
  • 定义一个分页器函数
def make_paginator(objects, page, num=1):
    paginator = Paginator(objects, num)
    try:
        object_list = paginator.page(page)
    except PageNotAnInteger:
        object_list = paginator.page(1)
    except EmptyPage:
        object_list = paginator.page(paginator.num_pages)
    return object_list, paginator
  • 在index中将文章总数和当前访问页码传入分页器函数
def index(request):
    entries = models.Entry.objects.all()
    page = request.GET.get('page', 1)
    entry_list, paginator = make_paginator(entries, page)
    page_data = pagination_data(paginator, page)
    return render(request, 'blog/index.html', locals())
  • 在index模板中写入代码
                {%  if entry_list.has_previous %}
                    <li><a href="?page={{ entry_list.previous_page_number }}"><i class="glyphicon glyphicon-chevron-left"></i>前一页</a></li>
                {% endif %}

                {% if first %}
                    <li><a href="?page=1">1</a></li>
                {% endif %}

                {% if left %}
                    {% if left_has_more %}
                        <span>...</span>
                    {% endif %}

                    {% for i in left %}
                        <li><a href="?page={{ i }}">{{ i }}</a></li>
                    {% endfor %}
                {% endif %}


                <li class="active"><a href="?page={{ entry_list.number }}">{{ entry_list.number }}</a></li>

                {% if right %}
                    {% for i in right %}
                        <li><a href="?page={{ i }}">{{ i }}</a></li>
                    {% endfor %}

                    {% if right_has_more %}
                        <span>...</span>
                    {% endif %}
                {% endif %}

                {% if last %}
                    <li><a href="?page={{ entry_list.num_pages }}">{{ entry_list.num_pages }}</a></li>
                {% endif %}

                {% if entry_list.has_next %}
                    <li><a href="?page={{ entry_list.next_page_number }}">下一页<i class="glyphicon glyphicon-chevron-right"></i></a></li>
                {% endif %}
                </ul>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 项目设置 DEBUG 一个布尔型用来开启或关闭项目的debug模式。如果设置为True,当你的应用抛出一个未...
    lijun_m阅读 4,212评论 0 0
  • 前言 应用程序有两种模式C/S、B/S。C/S是客户端/服务器端程序,也就是说这类程序一般独立运行。而B/S就是浏...
    hehuijun阅读 14,969评论 0 17
  • 方法一:使用pure_pagination进行分页 1. pure_pagination介绍 pure_pagin...
    Jlan阅读 4,813评论 0 7
  • 一、Django框架前言知识: 1、C/S和B/S的区别: C/S结构软件:客户端/服务端软件,即客户端要自己下载...
    月下独酌123阅读 10,339评论 0 36
  • 模块间联系越多,其耦合性越强,同时表明其独立性越差( 降低耦合性,可以提高其独立性)。软件设计中通常用耦合度和内聚...
    riverstation阅读 6,308评论 0 8

友情链接更多精彩内容