使用Django实现分页功能
2017-06-21 17:30
513 查看
上一个博客写了个简单的留言板,如果数据量太多的话在一页显示就不那么友好了,本文就是做一个分页显示。
代码在上一篇的基础上修改。
其实主要使用了Django自带的Paginator模块,关于这个模块大家可以自己去官方文档查看,功能还是挺强大的,如果配合ListView的话,三行代码就可以实现分页功能。
代码在上一篇的基础上修改。
导入分页模块并修改views
#只需修改index函数即可 from django.core.paginator import Paginator def index(request): messages = models.Message.objects.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> <meta charset="utf-8" /> <title>留言板</title> <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" 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.title }}</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">首页</a></li> {% if messages.has_previous %} <li><a href="/guestbook/index/?page={{ messages.previous_page_number }}">上一页</a></li> {% endif %} {% for num in messages.paginator.page_range %} <li><a href="/guestbook/index/?page={{ num }}">{{ num }}</a></li> {% endfor %} {% if messages.has_next %} <li><a href="/guestbook/index/?page={{ messages.next_page_number }}">下一页</a></li> {% endif %} <li><a href="/guestbook/index/?page={{ messages.paginator.num_pages }}">尾页</a></li> </ul> </div> <!-- 分页结束 --> <div> <a class="btn btn-xs btn-primary" href="/guestbook/create/">去留言</a> </div> </body> </html>
其实主要使用了Django自带的Paginator模块,关于这个模块大家可以自己去官方文档查看,功能还是挺强大的,如果配合ListView的话,三行代码就可以实现分页功能。
相关文章推荐
- 【Django插件使用】django-pagination实现页面分页功能
- django使用 Paginator 实现分页功能
- 在django中使用自定义标签实现分页功能
- 在django中使用自定义标签实现分页功能
- 使用PagedDataSource类实现DataList和Repeater控件的分页显示功能
- 使用AspNetPager分页控件、分页存储过程及用户控件基类实现的完美分页功能
- 使用AspNetPager分页控件、分页存储过程及用户控件基类实现的完美分页功能
- 使用Hibernate3实现分页功能
- Android_Listview中使用线程实现分页延迟加载的功能
- 使用hibernate和struts2实现分页功能
- 如何使用struts2结合MySQL实现分页功能?
- JXCELL实例学习与研究(六) 之 sheet的分页功能的实现,以及基本EXCEL公式的使用 以及补充函数说明
- 使用Hibernate3实现分页功能
- 使用JQuery实现分页功能
- extremetable+hibernate实现分页 关于结合hibernate后台数据分页和eXtremeTable分页功能的使用
- 使用PagedDataSource类实现DataList和Repeater控件的分页显示功能
- 使用Ext的Grid,Form,Dialog来实现分页列表,创建,修改,删除功能
- 使用PagedDataSource类实现DataList和Repeater控件的分页显示功能
- Repeater控件使用实现(含删除,分页功能)
- Sencha Touch 2 中 listpaging 与 pullrefresh 2个插件的使用(分页功能实现)