本文实例讲述了Django框架实现的简单分页功能。分享给大家供大家参考,具体如下:
前面一篇《Django开发的简易留言板》写了个简单的留言板,如果数据量太多的话在一页显示就不那么友好了,本文就是做一个分页显示。
代码在上一篇的基础上修改。
导入分页模块并修改views
#只需修改index函数即可
from django.core.paginator import Paginator
def index(request):
messages = models.Message. s.all() #获取全部数据
limit = 10
paginator = Paginator(messages, limit) #按每页10条分页
page = request.GET.get(\'page\',\'1\') #默认跳转到第一页
result = paginator.page(page)
return render(request, \'guestbook/index.html\', {\'messages\' : result})
修改html
<!DOCTYPE html>
<html>
<head>
< charset=\"utf-8\" />
< >留言板</ >
< rel=\"stylesheet\" href=\"https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css\" rel=\"external nofollow\" crossorigin=\"anonymous\">
</head>
<body>
<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 messages %}
{% for message in messages %}
<tr class=\"{% cycle \'active\' \'success\' \'warning\' \'info\' %}\">
<td>{{ message.publish|date:\'Y-m-d H:i:s\' }}</td>
<td>{{ message.username }}</td>
<td>{{ message. }}</td>
<td>{{ message.content }}</td>
</tr>
{% endfor %}
{% else %}
<tr>
<td colspan=\"4\">无数据</td>
</tr>
{% endif %}
</tbody>
</table>
<!-- 分页开始 -->
<div>
<ul class=\"pagination\">
<li><a href=\"/guestbook/index/?page=1\" rel=\"external nofollow\" >首页</a></li>
{% if messages.has_previous %}
<li><a href=\"/guestbook/index/?page={{ messages.previous_page_number }}\" rel=\"external nofollow\" >上一页</a></li>
{% endif %}
{% for num in messages.paginator.page_range %}
<li><a href=\"/guestbook/index/?page={{ num }}\" rel=\"external nofollow\" >{{ num }}</a></li>
{% endfor %}
{% if messages.has_next %}
<li><a href=\"/guestbook/index/?page={{ messages.next_page_number }}\" rel=\"external nofollow\" >下一页</a></li>
{% endif %}
<li><a href=\"/guestbook/index/?page={{ messages.paginator.num_pages }}\" rel=\"external nofollow\" >尾页</a></li>
</ul>
</div>
<!-- 分页结束 -->
<div>
<a class=\"btn btn-xs btn-primary\" href=\"/guestbook/create/\" rel=\"external nofollow\" >去留言</a>
</div>
</body>
</html>
其实主要使用了Django自带的Paginator模块,关于这个模块大家可以自己去官方文档查看,功能还是挺强大的,如果配合ListView的话,三行代码就可以实现分页功能。
希望本文所述对大家基于Django框架的Python程序设计有所帮助。
继续阅读与本文标签相同的文章
上一篇 :
浅析大数据HIVE和HBASE有何区别
-
万字长文详解文本抽取:从算法理论到实践(附“达观杯”官方baseline实现解析及答疑)
2026-05-19栏目: 教程
-
干货 | 关于机器学习的知识点,全在这篇文章里了
2026-05-19栏目: 教程
-
独家|利用OpenCV,Python和Ubidots来构建行人计数器程序(附代码&解析)
2026-05-19栏目: 教程
-
送你9个快速使用Pytorch训练解决神经网络的技巧(附代码)
2026-05-19栏目: 教程
-
Docker容器实战(一) - 封神Server端技术
2026-05-19栏目: 教程
