轻松搞定Django分页功能
view代码 from django.core.paginator import Paginator def announcement(request): ctx = { 'global': GlobalCtx, 'announcements': models.Announcement.objects.all(), } paginator
目录3 个章节
view代码
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)
网页代码
<!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>
效果

_EOF_
轻松搞定Django分页功能
- 本文作者:
- 程序设计实验室
- 版权声明:
- 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
相关文章
Django+Taro项目实现企业微信登录
前言 还是最近在做的一个小项目,后端用的是Django搭配RestFramework做接口,前端第一次尝试用京东开源的Taro框架来做多端(目前需要做用于企业微信的H5端和微信小程序) 本文记录一下企业微信登录的流程,上周看文档看得头晕晕的,其实很简单,封装好了就几行代码的事~ 两种方式 一种是先拼接好登录要用的地址authorize_url,回调地址设置成h5应用的网页入口,然后把authori
2022-04-08 · Django · 约 1 分钟
Django快速开发实践:Drf框架和xadmin配置指北
步骤 既然是快速开发,那废话不多说,直接说步骤: 安装Djagno 安装Django Rest Framework 定义models 定义Rest framework的serializers 定义Rest framework的viewsets 配置Rest framework的router 配置管理后台admin 根据需要写template和对应的view 经过这些步骤就能得到一个具备完整的后端接
2022-09-06 · Django · 约 1 分钟
关于uwsgi服务器的管理
前言 使用Django开发项目好是好,就是部署的时候太麻烦,使用Uwsgi服务器的话,每次修改了代码,都需要重新启动服务器才可以生效。然后uwsgi服务器的重启也挺麻烦。 看了一下官网的文档,最好是把uwsgi安装到venv虚拟环境里面,这样的话在 ps aux 的时候容易区分啦。 查看uwsgi进程 ps -aux | grep uwsgi 结束原uwsgi进程 kill -9 27543 结论
2025-10-27 · Django · 约 1 分钟
Django数据库性能优化之使用Python集合操作
前言 最近有个新需求: 人员基础信息(记作人员A),10w 某种类型的人员信息(记作人员B),1000 要求在后台上(Django Admin)分别展示:已录入A的人员B列表、未录入的人员B列表 团队的DBA提议使用视图可以解决这个问题(不愧是搞数据库的) PS:起先我觉得Django的Model是直接管理数据库表的,使用Model来映射数据库模型怕是有一定的麻烦,不过查了一下资料发现并不会~ 只
2022-08-26 · Django · 约 1 分钟
讨论
共 0 条加载评论中…