返回文章列表文章索引阅读全文
STARBLOG / 阅读手记
Django

Easily Implement Django Pagination

View code from django.core.paginator import Paginator def announcement(request): ctx = { 'global': GlobalCtx, 'announcements': models.Announcement.objects.all(), } paginator

曦远 (DealiAxy)约 6 分钟
目录3 个章节

View code

from django.core.paginator import Paginator

def announcement(request):
    ctx = {
        'global': GlobalCtx,
        'announcements': models.Announcement.objects.all(),
    }

    paginator = Paginator(ctx['announcements'], Config.admin.paginator_limit)  # Config.admin.paginator_limit 每一页显示数量
    ctx['paginator'] = paginator.page(request.GET.get('page', '1'))
    return render(request, 'announcement.html', ctx)

Web page code

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" crossorigin="anonymous">

</head>
<body class="container">
<table class="table table-striped table-bordered table-hover table-condensed">
    <thead>
    <tr class="danger">
        <th>时间</th>
        <th>发布者</th>
        <th>标题</th>
        <th>内容</th>
    </tr>
    </thead>
    <tbody>
    {% if paginator %}
        {% for a in paginator %}
            <tr class="{% cycle 'active' 'success' 'warning' 'info' %}">
                <td>{{ a.publish|date:'Y-m-d H:i:s' }}</td>
                <td>{{ a.username }}</td>
                <td>{{ a.title }}</td>
                <td>{{ a.content }}</td>
            </tr>
        {% endfor %}
    {% else %}
        <tr>
            <td colspan="4">无数据</td>
        </tr>
    {% endif %}
    </tbody>
</table>

<!-- 分页开始 -->
<div>
    <ul class="pagination">
        <li><a href="/console/announcement?page=1">首页</a></li>
        {% if paginator.has_previous %}
            <li><a href="/console/announcement?page={{ paginator.previous_page_number }}">上一页</a></li>
        {% endif %}

        {% for num in paginator.paginator.page_range %}
            <li><a href="/console/announcement?page={{ num }}">{{ num }}</a></li>
        {% endfor %}

        {% if paginator.has_next %}
            <li><a href="/console/announcement?page={{ paginator.next_page_number }}">下一页</a></li>
        {% endif %}
        <li><a href="/console/announcement?page={{ paginator.paginator.num_pages }}">尾页</a></li>
    </ul>
</div>
<!-- 分页结束 -->

</body>
</html>

Result

_EOF_

Easily Implement Django Pagination

本文作者:
程序设计实验室
版权声明:
本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

相关文章

聊聊Django应用的部署和性能的那些事儿

前言 随着工作的深入,我越来越发现Python Web开发中有很多坑,也一直在羡慕AspNetCore和Go等的可执行文件部署和高性能,以及Spring生态的丰富,不过因为工作用了Django,生活还是要继续的嘛,这Django好歹也是有很大份额的Web框架,也没那么不堪,至少开发速度上就吊打一众框架了~ 在之前的文章里我介绍过使用Docker部署Django应用的方法,不过那种部署方式只适合上线

2022-05-27 · Django · 约 1 分钟

给Django的Admin添加自定义Action-并移除需要选择对象的限制

前言 不得不说,Django的Admin真的给开发带来很多便利,这不,我又来折腾了,这次是添加自定义的action 这个自定义的Action可以看看官方文档的介绍,很详细,不再赘述。 https://docs.djangoproject.com/en/3.0/ref/contrib/admin/actions/ 界面效果 Django默认的添加完action是要选择下面的对象才能提交的,不过我不需

2022-08-26 · Django · 约 1 分钟

Django探索验证码功能的实现 - DjangoStarter项目模板里的封装

前言 依然是最近在做的这个项目,用Django做后端,App上提交信息的时候需要一个验证码来防止用户乱提交,正好我的「DjangoStarter」项目脚手架也有封装了验证码功能,不过我发现好像里面只是把验证码作为admin后台登录的校验手段,并没有给出前后端分离项目的验证码相关接口。 所以本文介绍验证码功能实现的同时,也对「DjangoStarter」的验证码模块做一层封装,使其更方便使用~ 用哪

2022-04-09 · Django · 约 1 分钟

讨论

共 0 条

良言一句三冬暖,恶语伤人六月寒。

加载评论中…