Django分页

1、在视图函数文件中引入‘分页器’

from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger

2、给原来的罗列信息函数,添加分页功能,即按照页码,只返回部分信息。

@login_required
def article_list(request):
    articles_list = ArticlePost.objects.filter(author=request.user)
    #根据查询的articles_list创建分页对象,每页3个
    paginator = Paginator(articles_list, 3)
    #获得GET请求的参数:page的值,也就是页码数
    page = request.GET.get('page')
    try:
        current_page = paginator.page(page)#按照页码,使用分页器的page方法得到页面内容
        articles = current_page.object_list#得到页面内容的对象列表
    except PageNotAnInteger:#如果请求的页码不是整数
        current_page = paginator.page(1)#返回第一页
        articles = current_page.object_list
    except EmptyPage:#如果页码值为空,或URL参数中没有page
        current_page = paginator.page(paginator.num_pages)#返回最后一页
        articles = current_page.object_list


    context = {'articles': articles, 'page':current_page}
    return render(request, 'article/column/article_list.html', context)

3、向项目的根templates中添加paginator.html模板,用于在需要分页的地方include

注意在写href时,问号和page之间没有空格

<div class="pagination">
    <span class="step-links">
        {% if page.has_previous %}   <!--判断是否有上一页-->
            <a href="?page={{ page.previous_page_number }}">Previous</a>
        {% endif %}
        <span class="current">
            Page {{ page.number }} of {{ page.paginator.num_pages }}
        </span>
        {% if page.has_next %}    <!--判断是否有下一页-->
            <a href="?page={{ page.next_page_number}}">Next</a>
        {% endif %}
    </span>
</div>

4、在原来的罗列信息页面中,引入分页模板

<table>
...
</table>
    {% include "paginator.html" %}

5、运行结果如下

相关推荐

  1. django--功能

    2024-06-06 21:08:06       58 阅读
  2. Django

    2024-06-06 21:08:06       72 阅读
  3. Web框架开发-Django-

    2024-06-06 21:08:06       39 阅读
  4. DRF器(Django Restful Framework)

    2024-06-06 21:08:06       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-06 21:08:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-06 21:08:06       101 阅读
  3. 在Django里面运行非项目文件

    2024-06-06 21:08:06       82 阅读
  4. Python语言-面向对象

    2024-06-06 21:08:06       91 阅读

热门阅读

  1. TP6 事件绑定、监听、订阅

    2024-06-06 21:08:06       28 阅读
  2. 使用Keepalived提高吞吐量和负载均衡ip_hash.

    2024-06-06 21:08:06       30 阅读
  3. 找到自己的前提是认识自己

    2024-06-06 21:08:06       26 阅读
  4. Android Studio SharedPreferences的使用

    2024-06-06 21:08:06       29 阅读
  5. 使用Scapy框架分析HTTP流量

    2024-06-06 21:08:06       31 阅读
  6. 无人机反制软硬手段

    2024-06-06 21:08:06       30 阅读
  7. 单例模式(C语言)

    2024-06-06 21:08:06       32 阅读
  8. 自学之路Flutter使用Provider进行状态管理

    2024-06-06 21:08:06       31 阅读
  9. Oracle 如何定自增长数字列

    2024-06-06 21:08:06       24 阅读
  10. QNX Trusted Disk (QTD) 的原理及数据保护机制

    2024-06-06 21:08:06       23 阅读